2010-09-09 27 views
1

我知道下面的腳本會打印用' - '(2破折號)分隔的行,但是如果有很多' - '(破折號),我怎麼能使用它? ?使用不同長度的記錄分隔符

{ 
    local $/ = "--\n"; 
    while (<>) { 
     chomp; 
     print; 
    } 
} 

回答

8

您將不得不推出自己的數據流解析器。 $/isn't up to the task:

請記住:$ /的值是一個字符串,而不是正則表達式。 awk必須更好的東西。 :-)


但是,有三個破折號結束和一個新行也是以兩個破折號和一個換行符結束的行線。僅僅換掉chomp命令是不夠的?

{ 
    local $/ = "--\n"; 
    while (<>) { 
     chomp; s/\-+$//; # chop off minimum record separator AND extra dashes 
     print; 
    } 
} 

 chomp && s/\-+$// 

對其中的數據的最後一個記錄不與記錄分隔字符串結束的情況下。

+0

不需要自我滾動,我們已經有['Data :: Record'](http://p3rl.org/Data::Record)。 – daxim 2010-09-10 09:56:22