2010-10-20 95 views
1

當我解析包含數千行的複雜文件時,出現問題。如何限制Perl拆分中返回的項目數量?

我已經實施了我的Perl腳本,就像前幾天一樣。

my ($head, $tail) = split /=/, $line; 

我的幾乎所有的源文件$line風格如下:

constant normalLines = <type value>  /* hello world */ 

,我可以得到輸出$tail = /* hello world */

今天,我發現了一個錯誤,當我分析是這樣的線(有兩條線=

constant specialLine = <type value>  /* hello = world */ 

但是現在的輸出是$tail = /* hello

如何修復我的錯誤仍然在我的代碼中使用split()?我還是想輸出$tail = /* hello = world */

回答

7

可以指定極限參數告訴split多少部件你想在最:

# split /PATTERN/,EXPR,LIMIT 

my ($head, $tail) = split /=/, $line, 2; 
+0

太好了。我不知道如何更好地描述我的問題。但是你輸入我真正需要的東西。我希望現在將其標記爲我的答案。但是我必須等6分鐘。哈哈。非常感謝。 – 2010-10-20 01:43:35

+0

每當您對Perl函數有疑問時,請閱讀它的文檔。這個答案已經在那裏。 :) – 2010-10-21 01:53:27

2

@Thilo是完全正確有關如何解決此問題,但源問題是你正在做一個列表分配的方式,導致列表項被刪除。這樣做的分裂像你這樣有可能導致以下列表:

["constant specialLine ", " <type value>  /* hello ", " world */"] 

當您使用列表中的任務,你把前兩個值,其餘的都扔掉了。

+1

感謝您的意見。這就是爲什麼我喜歡SOF。有時我可以收到一些很好的評論,即使我已經得到了我的答案,並在這裏更深入地瞭解我的原始問題。 BTW。我學到了一個新的英語單詞* Nerd *。 ;) – 2010-10-20 01:56:17