2016-08-22 99 views
2

我有Perl 5,版本22,(在Cygwin,如此漂亮的新版本)。使用\ R似乎不起作用,即使它应该。无法识别的转义 R通过test.pl行7

我只是用单一的新线更换双新行:

my $data = read_file($filename); 
$data =~ s/\R\R/\R/g; 

但是我得到的错误“无法识别的逃生\ r穿过在test.pl第7行”

有什么我做错了吗?

回答

5

\R以正则表达式模式匹配多个不同的换行符序列。

\R中的一个字符串文字(如替换表达式[1])是没有意义的。

使用

$data =~ s/(\R)\R+/$1/g; 

更重要的是,

$data =~ s/\R\K\R+//g; 

  1. 记住,

    s{...}{...} 
    

    相同

    s{...}{ qq{...} }e 
    
+0

在第一个片段,'$ 1'包含行结束匹配。 – ikegami