perl只打印数组的最后一行

eli*_*128 2 perl

我正在尝试打印数组,但输出只包含数组的最后一行.部分代码如下.

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)

我有点混淆为什么在同一个数组上结果不同.

TLP*_*TLP 7

在预感工作中,我尝试添加\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)

如果输出中包含这些空白字符,则它们将可见.