重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

二次元配列のハッシュ版を実現させたいのですが、
以下の記述で正しいでしょうか?
構文に疎いので教えてください。


#!/usr/bin/perl

%HASH_TEST = (
'あ'=>{'A'=>'1', 'B'=>'2', 'C'=>'3'},
'い'=>{'A'=>'4', 'B'=>'5', 'C'=>'6'},
);


print $HASH_TEST{'い'}{'B'}; #=> 5が表示されます。

exit;

__END__

A 回答 (1件)

直接的な回答は避けます。

次のソースを参考にしてみて下さい。(と、言っても、静的作成がほぼ質問への答えなのですが。)


ハッシュのハッシュを静的に作成する例と、動的に作成する例です。

# ハッシュのハッシュを静的に作る
%d = ( A => { AA=>aa, AB=>ab, AC=>ac, AD=>ad, AE=>ae },
B => { BA=>ba, BB=>bb, BC=>bc, BD=>bd, BE=>be },
C => { CA=>ca, CB=>cb, CC=>cc, CD=>cd, CE=>ce } );
foreach $i (sort keys %d) {
foreach $j (sort keys %{$d{$i}}) {
print '$d{'. $i. '}{'. $j. '}='. $d{$i}{$j}. ' ';
}
print "\n";
}
print "\n";


# ハッシュのハッシュを動的に作る
%h = ();
open(IN, 'in.data') || die "open error";
while(<IN>) {
chop;
my(%w);
$k = $_;
foreach (split(/ /)) {
$w{uc($_)} = $_;
}
$h{uc(substr($k, 0, 1))} = \%w;
}
close(IN);
# 動的に作ったハッシュのハッシュを取り出してみる
foreach $i (sort keys %h) {
foreach $j (sort keys %{$h{$i}}) {
print '$h{'. $i. '}{'. $j. '}='. $h{$i}{$j}. ' ';
}
print "\n";
}
print "\n";

なお、動的作成では、

aa ab ac ad ae
ba bb bc bd be
ca cb cd ce cf

の様なファイルを読み込ませる事を想定してあります。
    • good
    • 0

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