[Perl] perl中神奇的split

Sep 23rd, 2009

转载本站文章请注明,转载自:扶凯[http://www.php-oa.com]

本文链接: http://www.php-oa.com/2009/09/23/perl-split.html

今天和群中的朋友聊到perl的split,感觉它还是很容易让新人误会.但有很多时候,如果数据是固定标记来分隔,用他比使用正则可是方便多了.

为什么讲perl的第三个参数很神奇啦.主要在于split的第三个参数.

我们知道split是工作在列表的环境,他会装输入的数据,多分割几次,在建立结果列表,然后返回.接着,会返回第三个参数内的数据,其它的都扔弃.

第三个参数一定要非常小心,为什么,如下的程序,我们只需要前二个参数.我们注意第三个参数2

#!/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的话,输出如下结果

1xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
 ||
1xxxxxxx  || 2xxxxxx 3xxxxxx 4xxxxx
 ||
 

如果split是写的3的话,输出如下结果

1xxxxxxx  || 2xxxxxx ||
1xxxxxxx  || 2xxxxxx ||
 

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

Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪 ViVi 365Key 网摘 天极网摘 和讯网摘 博拉网 POCO 网摘 饭否 QQ 书签 Digbuzz 我挖网 Mister Wong
Tags: ,
No comments yet.