Perl打印功能为变量添加不需要的换行符

时间:2012-10-06 06:39:11

标签: perl printing newline

我认为这很简单。我有两个数组,我想用这些数组中的数字打印一个句子到一个文件中。我试过这个:

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"

我得到相同的输出,因此不再添加不需要的换行符。为什么呢?

1 个答案:

答案 0 :(得分:0)

由于文件是在Windows上创建的,因此可能会CRLF(即\r\n)行终止,而不仅仅是LF。默认情况下,chomp只会移除LF

此行将删除LF前面带有可选CR

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

或者,更改$/(默认的“输入记录分隔符”)以包含\r\n,此时chomp应正确删除两者。