我正在尝试打印数组,但输出只包含数组的最后一行.部分代码如下.
open OUT, "> /myFile.txt"
or die "Couldn't open output file: $!";
foreach (@result) {
print OUT;
}
Run Code Online (Sandbox Code Playgroud)
输出是
List Z
Run Code Online (Sandbox Code Playgroud)
这是最后一行,但是当我做出print "@result"去的时候是
List A
List B
List C so on...
Run Code Online (Sandbox Code Playgroud)
我有点混淆为什么在同一个数组上结果不同.
在预感工作中,我尝试添加\r到输入行的末尾,当然,它会产生一种错觉,即只有输入的最后一行打印到文件中.这是测试它的代码:
use strict;
use warnings;
my @result = map "$_\r", 'A' .. 'Z';
open (OUT, "> myFile.txt") or die("Couldn't open output file: $!");
foreach (@result) {
print OUT ;
}
Run Code Online (Sandbox Code Playgroud)
您可能已经完成的操作是chomp在来自不同操作系统(DOS,Windows)的文件的行上执行,该文件不会删除\r行结尾.因此,当打印线条时,线条会相互重叠.
如果这是错误的,解决方案是使用该dos2unix工具来修复您的文件,或使用:
s/\s+\z//;
Run Code Online (Sandbox Code Playgroud)
剥离你的换行符.
您可以Data::Dumper使用该选项检查输入Useqq,例如:
use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper \@result;
Run Code Online (Sandbox Code Playgroud)
如果输出中包含这些空白字符,则它们将可见.