我正在读一个名为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)