0

作为管道一部分的程序正在解析输出文本文件,但会引发错误。这是代码

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 到底是什么意思?

有什么建议吗?

非常感谢

尼诺

4

1 回答 1

5
  • 第 3 行:读取整个文件,请参阅Perl Idioms Explained
  • 第 5 行:将文本拆分为块。将其更改为my @pred_blocks = split(/^-+$/m, $pred_text);,请参阅修饰符
  • 第 7 行:检查当前块是否包含以 . 开头的行>。如果没有,它将中止脚本
于 2013-01-15T12:55:15.077 回答