1

これは数回前に尋ねられましたが、それらの答えのどれも私の状況ではうまくいかないようです。

私のコード:

open(FILE, "<", $fileb) or die "File not openable: $!";
while (<FILE>) {
    $filebmeta[$line] = (data => $_, match => -1);
    $line++;
}
close(FILE);
$line = 0;


for my $hashref (@filebmeta) {
     print "$hashref->{data}\n";
}

このコードを実行すると、次のように出力されます。'./partc.pl行152で"strict refs"が使用されている間は、文字列( "-1")をHASHrefとして使用できません。

なぜこれが起こっているのか考えていますか?ループ内でハッシュを適切に逆参照できないようです。

4

3 に答える 3

7

配列の要素はhashrefである必要があるため、assigmentステートメントでは中括弧を使用する必要があります。

$filebmeta[$line] = {data => $_, match => -1};

コードは配列にリストを割り当てているので、リストの最後の要素である。を取得するだけ-1です。したがって、エラーメッセージ。

于 2011-07-15T05:20:08.890 に答える
4

(data => $_, match => -1)はハッシュ参照を作成せず、リストを作成します。あなたはおそらく意味しました{data => $_, match => -1}

于 2011-07-15T05:20:13.360 に答える
-1

あなたはあなたのコードのすべての未定義の変数に加えて意味しますか?perlreftutを読み、構文に注意してください。

于 2011-07-15T05:26:55.923 に答える