2016-08-22 93 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