我有一个文本文件,其内容如下:
a b
c
我使用下面的Perl代码替换下划线' - 'char在输入行中出现空格字符的位置:
while (<>) {
$_ =~ s/\s/_/;
print $_;
}
我得到这样的输出:
a_b
c_
所以我的问题是为什么Perl会在换行符'\ n'字符处替换下划线,这从包含'c'的输入行中可以看出? 当我在代码中使用 chomp 时,它按预期工作。
答案 0 :(得分:10)
\s
匹配所有空白字符[ \t\r\n\f]
,因此如果要替换普通空格,请使用空格
$_ =~ s/ /_/g;
# or just
s/ /_/g;
翻译也可以用于这种简单的替换,例如。 tr/ /_/;