Perl"= + \n"作为$ /分隔符

Eug*_*sky 3 perl

抱歉有一个愚蠢的问题,但我是初学者,所以我无法解决这个问题.

我处理文件,其中数据块被=不同长度的连续符号行划分,然后是\n.我想将这些块作为单独的记录读取,$/ = "=+\n";但是它没有检测到===分隔符.

所以我的代码是:

$ cat prog1 
#!/usr/bin/perl

use v5.22;
use strict;
use warnings;

$/ = "=+\n";
$\="+++\n";

while (<>){
  chomp;
  print;
}
Run Code Online (Sandbox Code Playgroud)

我的数据:

$ cat data1 
line1
line2
===
line4
line5
Run Code Online (Sandbox Code Playgroud)

我的输出:

$ ./prog1 data1 
line1
line2
===
line4
line5
+++
Run Code Online (Sandbox Code Playgroud)

Sob*_*que 5

$/不支持正则表达式.你需要使用===\n.

您可以使用正则表达式伪chomp使用正则表达式.

#!/usr/bin/env perl
use strict;
use warnings;


$/ = "=\n";
$\="+++\n";

while (<>){
  s/^=+\n\z//gm;
  print;
}
Run Code Online (Sandbox Code Playgroud)

见:perlvar:

$ /的值是一个字符串,而不是正则表达式.