Perl也替换了换行符

时间:2014-02-28 07:37:56

标签: regex perl

我有一个文本文件,其内容如下:

a b
c

我使用下面的Perl代码替换下划线' - 'char在输入行中出现空格字符的位置:

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

我得到这样的输出:

a_b
c_

所以我的问题是为什么Perl会在换行符'\ n'字符处替换下划线,这从包含'c'的输入行中可以看出? 当我在代码中使用 chomp 时,它按预期工作。

1 个答案:

答案 0 :(得分:10)

\s匹配所有空白字符[ \t\r\n\f],因此如果要替换普通空格,请使用空格

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

翻译也可以用于这种简单的替换,例如。 tr/ /_/;