- ベストアンサー
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をコメントアウトすればエラーはでません。どうしてエラーになってしまうのでしょうか?どうすればエラーを出さずに表示することができるのでしょうか?どうかご教授ください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
1. あらかじめ my %hoge; ないし our %hoge; としておく. 2. use vars '%hoge'; を使う. 「納得できない」といわれても, 「無い袖は振れない」わけでして.... my にしろ our にしろ, ハッシュならハッシュ全体が対象になります. だから, 一部のみにアクセスする $hoge{"key1"} = "value1"; という形では my も our もつけられないんです.
その他の回答 (1)
- taporu
- ベストアンサー率44% (46/104)
use strict;は最初に変数や配列の宣言をしなければなりません。 最初に、my %hoge;や、local %hoge;などで宣言してください。
補足
%hoge = ("key1","value1"); のような書き方ではなく、 $hoge{"key1"} = "value1"; の書き方ではどうすればいいのかを知りたいです。 ちなみに、my %hoge = ("key1","value1");であれば表示できましたが、local %hoge = ("key1","value1");ではエラーになりました。 勉強なので、my %hogeで表示できるからいっか!っていうのは納得がいきません。$hoge{"key1"}のような書き方で表示する方法を教えてください。よろしくお願いします。
お礼
理由がわかれば納得できます。$hoge{"key1"} = "value1";という形ではやりようがないのですね。どうもありがとうございました!