Perl打印函数向变量添加不需要的换行符

ozxc1zmp  于 12个月前  发布在  Perl
关注(0)|答案(1)|浏览(182)

我想这会很简单。我有两个数组,我想打印一个句子,从这些数组中的数字到一个文件中。我试了一下:

chomp $array1[$x];
chomp $array2[$x];
print FILE "Number1: $array1[$x] \& Number2: $array2[$x] Some Words\n";

字符串
这给了我:

Number1: 0
 & Number2: 87.3
 Some Words


(这里的数字只是例子)。
你知道为什么会这样吗?我试过

$array1[$x] =~ s/\n//g;
$array2[$x] =~ s/\n//g;


但是它并没有修复任何问题。另外,如果我显式地将这些额外的换行符放入,就像这样:

print FILE "Number1: $array1[$x]\n \& Number2: $array2[$x]\n Some Words\n"


我得到了相同的输出,所以不需要的换行符不再被添加。为什么?

mhd8tkvw

mhd8tkvw1#

由于该文件是在Windows上创建的,它可能有CRLF(即\r\n)行终止,而不仅仅是LFchomp默认情况下只删除LF
此行将删除CR前面带有 optionalLF

$array1[$x] =~ s/\r?\n//;

字符串
或者,将$/(默认的“输入记录分隔符”)更改为包含\r\n,此时chomp应该正确地剥离两者。

相关问题