• ベストアンサー

perl ハッシュ エラー

現在perlの勉強中で、ハッシュの項目まできました。しかし、use strictにするとこのコードがエラーになります。 #!/usr/bin/perl use strict; use warnings; print "Content-type:text/html\n\n"; $hoge{"key1"} = "value1"; print $hoge{"key1"}; exit; ヴァージョンは5.8.9です。use strictをコメントアウトすればエラーはでません。どうしてエラーになってしまうのでしょうか?どうすればエラーを出さずに表示することができるのでしょうか?どうかご教授ください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

1. あらかじめ my %hoge; ないし our %hoge; としておく. 2. use vars '%hoge'; を使う. 「納得できない」といわれても, 「無い袖は振れない」わけでして.... my にしろ our にしろ, ハッシュならハッシュ全体が対象になります. だから, 一部のみにアクセスする $hoge{"key1"} = "value1"; という形では my も our もつけられないんです.

3104kita
質問者

お礼

理由がわかれば納得できます。$hoge{"key1"} = "value1";という形ではやりようがないのですね。どうもありがとうございました!

その他の回答 (1)

  • taporu
  • ベストアンサー率44% (46/104)
回答No.1

use strict;は最初に変数や配列の宣言をしなければなりません。 最初に、my %hoge;や、local %hoge;などで宣言してください。

3104kita
質問者

補足

%hoge = ("key1","value1"); のような書き方ではなく、 $hoge{"key1"} = "value1"; の書き方ではどうすればいいのかを知りたいです。 ちなみに、my %hoge = ("key1","value1");であれば表示できましたが、local %hoge = ("key1","value1");ではエラーになりました。 勉強なので、my %hogeで表示できるからいっか!っていうのは納得がいきません。$hoge{"key1"}のような書き方で表示する方法を教えてください。よろしくお願いします。