2014-02-28 107 views
0

我有一個文本文件,其內容如下:Perl的替代品,在換行空格替代品也

a b 
c 

我用下面的Perl代碼來代替下劃線「 - 」字符在何地的空間字符出現在輸入行:

while (<>) { 
    $_ =~ s/\s/_/; 
    print $_; 
} 

,我得到這樣的輸出:

a_b 
c_ 

所以我的問題我那麼爲什麼Perl會用新行'\ n'char替代下劃線,這在包含'c'的輸入行中很明顯? 當我在代碼中使用chomp時,它按預期工作。

回答

10

\s匹配所有空白字符[ \t\r\n\f],所以如果你想更換普通空間

$_ =~ s/ /_/g; 
# or just 
s/ /_/g; 

翻譯也可以用於這樣的簡單替代,如利用空間。 tr/ /_/;

+1

此外,原始的海報只是改變了第一次發生:如果他想要改變行中的所有事件,他可能希望'g'結束。 – kjpires

+0

@IbrahimQuraish你可以接受答案,如果它適合你。 –