2014-02-28 56 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你可以接受答案,如果它适合你。 –