2013-01-15 37 views
0

程序是流水線的一部分,它解析輸出文本文件,但會產生錯誤。以下是代碼解析文本文件perl

1 open(PRED, '<', $predfile); 
2 my $pred_text; 
3 { local $/; $pred_text = <PRED>; } 
4 close PRED; 

5 my @pred_blocks = split(/^\-+$/, $pred_text); 

6 foreach my $pred_block (@pred_blocks) { 
7  $pred_block =~ /^>(.+)$/m or die("Internal error while parsing $predfile"); 
    ..... 
} 

第3行之後應該包含$ pred_text?我想整個文本文件。我還假設我應該從文本文件中獲得不同的塊,但是第5行中的列表只包含一個代表整個文件的塊。第5行中的正則表達式是什麼?它如何分割文本?第7行$ pred_block =〜/^>(.+)$/m究竟意味着什麼?

有什麼建議嗎?

非常感謝

尼諾

回答

5
  • 3號線:讀取整個文件,請參閱Perl Idioms Explained
  • 5號線:分裂文成塊。將其更改爲my @pred_blocks = split(/^-+$/m, $pred_text);,請參閱Modifiers
  • 第7行:檢查當前塊是否包含以>開頭的行。如果沒有,則會中止腳本
+0

+1鏈接到將來有用的文檔。 –