perl的split,感覺它還是很容易讓新人誤會.但有很多時(shí)候,如果數(shù)據(jù)是固定標(biāo)記來分隔,用他比使用正則可是方便多了.
為什么講perl的第三個(gè)參數(shù)很神奇啦.主要在于split的第三個(gè)參數(shù).
我們知道split是工作在列表的環(huán)境,他會裝輸入的數(shù)據(jù),多分割幾次,在建立結(jié)果列表,然后返回.接著,會返回第三個(gè)參數(shù)內(nèi)的數(shù)據(jù),其它的都扔棄.
第三個(gè)參數(shù)一定要非常小心,為什么,如下的程序,我們只需要前二個(gè)參數(shù).我們注意第三個(gè)參數(shù)
#!/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第三個(gè)參數(shù)是寫的2的話,輸出如下結(jié)果
1
1xxxxxxx || 2xxxxxx 3xxxxxx 4xxxxx
2
||
3
1xxxxxxx || 2xxxxxx 3xxxxxx 4xxxxx
4
||
5
如果split是寫的3的話,輸出如下結(jié)果
1
1xxxxxxx || 2xxxxxx ||
2
1xxxxxxx || 2xxxxxx ||
3
這主要是因?yàn)?如果想取得前2個(gè)字段,字段記數(shù)為3.因?yàn)樾枰o文件切成3份.拿出前二份.不然都給最后面部分做一份了.
轉(zhuǎn)自遠(yuǎn)望技術(shù)論壇。
第三個(gè)參數(shù)在大數(shù)據(jù)量情況下還是可以提高不少速度。