-1

我使用以下方法创建了一个文件:

open OUT, ">$outfile";
print OUT "$file_in;$system_in;$symbol_in;$price_in\n";

并稍后尝试从此文件中读取:

open DATAIN, "<", "$outfile" or die $!;
while(<DATAIN>)
{
    chomp($_);
    my @ld = split(/\;/,$_);
    my $system = $ld[1];
    my $file = $ld[0];
    ...

    print "HELLOOO?$file\t$system\..";
}

但在第一次迭代中,它给了我这个错误:

Can't use an undefined value as an ARRAY reference

问题实际上出在 \n 中,我用它在文件中创建了我之后尝试读取的新行。

我也尝试使用 \r ,错误不存在,但随后它全部读取为一行。

请问有什么帮助吗?提前非常感谢!

完整代码:

open OUT, ">$outfile";
print OUT "$file_in;$system_in;$symbol_in;$price_in\n";

open my $fh, "<", "$outfile" or die $!;
while(<$fh>)
{
    chomp;

    my @ld = split(/\;/);
    my $system = $ld[1];
    my $file = $ld[0];
    my $symbol = $ld[2];
my $price = $ld[3];

    my $key = $file . $symbol;

    print "HELLOOO?$file\t$system\t$symbol\t$price\n"
}

错误:

Can't use an undefined value as an ARRAY reference at C:/Perl/lib/Math/BigInt/Calc.pm line 476, <fh> line1.

错误是当它从文件中读取该行时。如果在我放置的初始文件中/r不是/n,我不会收到此错误,但所有文件都被读取为一行。

4

1 回答 1

1

<>错误地调用了运算符。

您不应该使用文件句柄DATA

您应该使用词法文件句柄。

您不需要传递$_chompsplit。这就是$_存在的原因。

这就是你想要的方式。

open my $fh, '<', $outfile or die $!;
while(<$fh>) {
    chomp;
    my @ld = split(/\;/);
    ...
}
于 2013-04-02T16:37:46.820 回答