抱歉有一个愚蠢的问题,但我是初学者,所以我无法解决这个问题.
我处理文件,其中数据块被=不同长度的连续符号行划分,然后是\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)
$/不支持正则表达式.你需要使用===\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:
$ /的值是一个字符串,而不是正则表达式.
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |