許せない心理テスト

現在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をコメントアウトすればエラーはでません。どうしてエラーになってしまうのでしょうか?どうすればエラーを出さずに表示することができるのでしょうか?どうかご教授ください。よろしくお願いします。

A 回答 (2件)

1. あらかじめ my %hoge; ないし our %hoge; としておく.


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

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

お礼日時:2010/04/01 18:23

use strict;は最初に変数や配列の宣言をしなければなりません。


最初に、my %hoge;や、local %hoge;などで宣言してください。

この回答への補足

%hoge = ("key1","value1");
のような書き方ではなく、
$hoge{"key1"} = "value1";
の書き方ではどうすればいいのかを知りたいです。

ちなみに、my %hoge = ("key1","value1");であれば表示できましたが、local %hoge = ("key1","value1");ではエラーになりました。

勉強なので、my %hogeで表示できるからいっか!っていうのは納得がいきません。$hoge{"key1"}のような書き方で表示する方法を教えてください。よろしくお願いします。

補足日時:2010/04/01 15:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報