我正在尝试打印数组,但输出只包含数组的最后一行。部分代码如下。
open OUT, "> /myFile.txt"
or die "Couldn't open output file: $!";
foreach (@result) {
print OUT;
}
输出是
List Z
这是最后一行,但当我print "@result"
时,输出是
List A
List B
List C so on...
我有点混淆为什么在同一个数组上结果不同。
答案 0 :(得分:2)
问题出在这里
open OUT, "> /myFile.txt"
这应该是
open OUT, ">>", "/myfile.txt"
你写的内容会覆盖foreach(@result)循环的每次迭代的整个文件。 您打算做的是追加它(“>>”)。 “>>” 中追加,“>”覆盖。
另请注意我如何将“>> /myfile.txt”分解为“>>”,“/ myfile.txt”。 这对于不太具体的开放应用来说更安全,更稳健。
答案 1 :(得分:0)
任何平台的外线终结器都可以通过清除行尾的空白并在打印时将其添加回来轻松修复
喜欢这个
open my $out, '>', '/myFile.txt' or die "Couldn't open output file: $!";
foreach (@result) {
s/\s+$//;
print $out "$_\n";
}
或
foreach my $line (@result) {
$line =~ s/\s+$//;
print $out "$line\n";
}