使用不同长度的记录分隔符

时间:2010-09-09 16:34:59

标签: perl

据我所知,下面的脚本会打印出以' - '(2个破折号)分隔的行,但是如果有很多' - '(短划线),我怎么能用呢?

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

1 个答案:

答案 0 :(得分: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/\-+$//

表示数据中的最后一条记录不以记录分隔符字符串结尾的情况。