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

DGT*_*DGT 1 perl

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

{
   local $/ = "--\n";
   while (<>) {
      chomp;
      print;
   }
}
Run Code Online (Sandbox Code Playgroud)

mob*_*mob 8

您必须滚动自己的数据流解析器.$/ 不能胜任这项任务:

请记住:$ /的值是字符串,而不是正则表达式.awk必须更好的东西.:-)


但是以三个破折号和换行符结尾的行也是以两个破折号和换行符结尾的行.交换chomp命令不够吗?

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

要么

       chomp && s/\-+$//
Run Code Online (Sandbox Code Playgroud)

对于数据中的最后一条记录不以记录分隔符字符串结尾的情况.