随笔 - 32, 文章 - 1, 评论 - 5, 引用 - 0
数据加载中……

perl中神奇的split

perl的split,感觉它还是很容易让新人误会.但有很多时候,如果数据是固定标记来分隔,用他比使用正则可是方便多了.
为什么讲perl的第三个参数很神奇啦.主要在于split的第三个参数.
我们知道split是工作在列表的环境,他会装输入的数据,多分割几次,在建立结果列表,然后返回.接着,会返回第三个参数内的数据,其它的都扔弃.
第三个参数一定要非常小心,为什么,如下的程序,我们只需要前二个参数.我们注意第三个参数

#!/usr/bin/perl
while(<DATA>){
  
my ($aa, $dd= split(/\s+/, $_, 2);
    
print "$aa  || $dd ||\n";

}

__DATA__
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  2xxxxxx 3xxxxxx 4xxxxx 

如果split第三个参数是写的2的话,输出如下结果
11xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
2||
31xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
4|| 
5


如果split是写的3的话,输出如下结果
11xxxxxxx  || 2xxxxxx ||
21xxxxxxx  || 2xxxxxx || 
3


这主要是因为,如果想取得前2个字段,字段记数为3.因为需要给文件切成3份.拿出前二份.不然都给最后面部分做一份了.
转自远望技术论坛。

第三个参数在大数据量情况下还是可以提高不少速度。

posted on 2010-12-01 17:36 colorfire 阅读(963) 评论(1)  编辑  收藏 所属分类: 脚本语言

评论

# re: perl中神奇的split  回复  更多评论   

写的真不错,我最近也在写一个关于Perl的教程,希望能多交流和指点。
能力有限,见笑了:http://www.yiibai.com/perl
2012-09-02 22:49 | forwall

只有注册用户登录后才能发表评论。


网站导航: