perl的split,感觉它还是很容易让新人误会.但有很多时候,如果数据是固定标记来分隔,用他比使用正则可是方便多了.
为什么讲perl的第三个参数很神奇啦.主要在于split的第三个参数.
我们知道split是工作在列表的环境,他会装输入的数据,多分割几次,在建立结果列表,然后返回.接着,会返回第三个参数内的数据,其它的都扔弃.
第三个参数一定要非常小心,为什么,如下的程序,我们只需要前二个参数.我们注意第三个参数
 #!/usr/bin/perl
#!/usr/bin/perl
 while(<DATA>){
while(<DATA>){
 my ($aa, $dd) = split(/\s+/, $_, 2);
  my ($aa, $dd) = split(/\s+/, $_, 2);
 print "$aa  || $dd ||\n";
    print "$aa  || $dd ||\n";

 }
}

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

如果split第三个参数是写的2的话,输出如下结果
1 1xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
2 ||
||
3 1xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
1xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
4 ||
|| 
5
 
如果split是写的3的话,输出如下结果
1 1xxxxxxx  || 2xxxxxx ||
1xxxxxxx  || 2xxxxxx ||
2 1xxxxxxx  || 2xxxxxx ||
1xxxxxxx  || 2xxxxxx || 
3
 
这主要是因为,如果想取得前2个字段,字段记数为3.因为需要给文件切成3份.拿出前二份.不然都给最后面部分做一份了.
转自远望技术论坛。
第三个参数在大数据量情况下还是可以提高不少速度。