1

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

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"

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

4

1 回答 1

0

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

此行将删除LF一个可选的前面CR

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

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

于 2012-10-06T07:20:26.607 回答