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

时间:2013-08-05 00:45:45

标签: arrays perl

我正在阅读一个名为remin-freq的文本文件,其中包含以下格式的数据:

1

1

13

2

我想读取行并将值存储在这样的数组中:@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;

1 个答案:

答案 0 :(得分:10)

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

你只想要

 print "@a\n";

代替。

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

chomp $line;