-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 も試してみましたが、エラーはありませんが、すべてが 1 行として読み取られます。

何か助けてください。よろしくお願いします!

完全なコード:

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このエラーは発生しませんが、すべてのファイルが 1 行として読み取られます。

4

1 に答える 1

1

<>オペレーターを間違って呼び出しています。

filehandle は使用しないでくださいDATA

レキシカル ファイルハンドルを使用する必要があります。

または$_に渡す必要はありません。だからこそ存在する。chompsplit$_

これがあなたがやりたい方法です。

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