プロが教える店舗&オフィスのセキュリティ対策術

Perlのハッシュで気軽に多次元配列のようなことをしたいのですができますか?
(下記のコードで一応動きましたが、本当にこういった機能があるのか自信がもてません。)

もし、可能である場合、
$fruits{'apple'}{'甘い'} = "リンゴ";
$fruits{'melon'}{'甘い'} = "メロン";
以外の代入方法があれば教えてください。

また、
print values %$fruits;
が表示されません。
表示させる方法はありますか?

以上、ご存知の方、居られましたらぜひ教えてください。

宜しくお願い致します。






-test.cgi-----------------------------------------
print "Content-Type: text/plain\n\n";

$fruits{'apple'}{'甘い'} = "リンゴ";
$fruits{'melon'}{'甘い'} = "メロン";

print '結果:'.$fruits{'apple'}{'甘い'};
print "\n";
print '結果:'.$fruits{'melon'}{'甘い'};

print "\n";
print keys %fruits;
print values %$fruits;# <<表示されない

exit;
-----------------------------------------

A 回答 (2件)

正しい書き方は



$fruits{'apple'}->{'甘い'} = "リンゴ";

です。

$fruits{'apple'}{'甘い'} = "リンゴ";

これは、ハッシュを多次元配列風に表現するための略式、ですね。

$fruits{'apple'} には2次元目のハッシュのリファレンスが入ります。
この場合、「keys %fruits」は、1次元目のキーとなりますが、「values %fruits」は2次元目へのリファレンス(の配列)なので、代入した文字列は表示されません。
keys, valuesで2次元目を取り出すには・・・

2次元目のキー : keys %{$fruits{'apple'}}
2次元目の値 : values %{$fruits{'apple'}}
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
とてもよく分かりました!
また、こういった使い方があって安心しました。

お礼日時:2006/09/05 18:34

多次元配列にする際には、どのようなソート方法を想定しているのかで


リファレンスを使用したり、配列を使用したりすればいいと思います。

下記URLでは配列の配列でソートを行っているのを参照されては如何でしょうか。

参考URL:http://www.din.or.jp/~ohzaki/perl.htm#SortOriginal
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
参考になるページを教えていただきありがとうございます。

お礼日時:2006/09/05 18:35

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