解析文本文件perl

0 regex perl parsing

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

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");
   .....
}  
Run Code Online (Sandbox Code Playgroud)

在第3行之后应该包含$ pred_text的内容?我想整个文本文件.我还假设我应该从文本文件中获取不同的块,但第5行中的列表只包含一个代表整个文件的块.第5行的正则表达式是什么?它是如何拆分文本的?在第7行$ pred_block =〜/^>(.+)$/m究竟是什么意思?

有什么建议吗?

非常感谢

尼诺

Ola*_*che 5

  • 第3行:读取整个文件,参见Perl Idioms Explained
  • 第5行:将文本拆分为块.将其更改为my @pred_blocks = split(/^-+$/m, $pred_text);,请参阅修改器
  • 第7行:检查当前块是否包含以?开头的行>.如果没有,则中止脚本