Regex 在换行符处也用Perl替换空白

Regex 在换行符处也用Perl替换空白,regex,perl,Regex,Perl,我有一个文本文件,其内容如下: a b c 我使用下面的Perl代码在输入行中出现空格字符的地方替换下划线“-”字符: while (<>) { $_ =~ s/\s/_/; print $_; } 所以我的问题是,为什么Perl也用下划线代替换行符“\n”char,这从包含“c”的输入行可以看出? 当我在代码中使用chomp时,它会按预期工作。\s匹配所有空白字符[\t\r\n\f],因此如果要替换纯空格,请使用空格 $_ =~ s/ /_/g; # or just

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

a b
c
我使用下面的Perl代码在输入行中出现空格字符的地方替换下划线“-”字符:

while (<>) {
   $_ =~ s/\s/_/;
   print $_;
}
所以我的问题是,为什么Perl也用下划线代替换行符“\n”char,这从包含“c”的输入行可以看出? 当我在代码中使用chomp时,它会按预期工作。

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

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

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

此外,原始海报仅更改第一个引用:如果他希望更改行中的所有引用,他可能希望在末尾添加“g”。
$_ =~ s/ /_/g;
# or just
s/ /_/g;