Perl push函数提供索引值而不是数组元素

use*_*731 5 arrays perl

我正在读一个名为remin-freq的文本文件,它具有以下格式的数据:

1

1

13

2
Run Code Online (Sandbox Code Playgroud)

我想读取行并将值存储在数组中,如下所示:@a=(1, 1, 13, 2).Perl push函数给出索引值/行号,即1,2,3,4,而不是我想要的输出.你能指出错误吗?这是我做的:

use strict;
use warnings;

open(FH, "<mention-freq") || die "$!";
my @a;
my $line;
while ($line = <FH>)
{
    $line =~ s/\n//;
    push @a, $line;
    print @a."\n";
}
close FH;
Run Code Online (Sandbox Code Playgroud)

tch*_*ist 10

错误是您正在打印连接@a和换行符.连接时,会强制标量上下文.数组的标量意义不是它的内容,而是它的元素数.

你只是想要

 print "@a\n";
Run Code Online (Sandbox Code Playgroud)

代替.

此外,虽然它不会影响您的代码,但删除<>readline运算符读取的记录终止符的正常方法是使用chomp:

chomp $line;
Run Code Online (Sandbox Code Playgroud)