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














如果split第三個參數(shù)是寫的2的話,輸出如下結(jié)果
1
1xxxxxxx || 2xxxxxx 3xxxxxx 4xxxxx
2
||
3
1xxxxxxx || 2xxxxxx 3xxxxxx 4xxxxx
4
||
5

2

3

4

5

如果split是寫的3的話,輸出如下結(jié)果
1
1xxxxxxx || 2xxxxxx ||
2
1xxxxxxx || 2xxxxxx ||
3

2

3

這主要是因為,如果想取得前2個字段,字段記數(shù)為3.因為需要給文件切成3份.拿出前二份.不然都給最后面部分做一份了.
轉(zhuǎn)自遠(yuǎn)望技術(shù)論壇。
第三個參數(shù)在大數(shù)據(jù)量情況下還是可以提高不少速度。
posted on 2010-12-01 17:36 colorfire 閱讀(977) 評論(1) 編輯 收藏 所屬分類: 腳本語言