• ベストアンサー

ハッシュを無名変数へ代入して任意の値を取り出したい

%allarray内の'あああ'を表示させたいのですが、 foreach構文で回して if($name eq "$allarray{$key}"){ $TopName=$allarray{$key}; } とその都度してから$TopNameで表示させるのがだるいので下記のように無名変数へハッシュを代入して取り出せないかと試行錯誤しているのですが、解決に至るアドバイスなど頂けませんでしょうか $name='aaa'; %allarray = ( 'aaa' => 'あああ', 'kakaka' => 'かかか', 'sasasa' => 'さささ', ); $mumei=\%allarray; $TopName=$mumei{$$allarray}{$name}; print "$TopName"; で >あああ と表示させたいのです お忙しいかとは存じますがよろしくお願いします。

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

  • ベストアンサー
  • pick52
  • ベストアンサー率35% (166/466)
回答No.3

他の皆さんと同じでなぜforeachでループさせたくないのかがまったく 分かりませんが(というより何をしたいのか自体分かりませんが)。 上記なら $name='aaa'; %allarray = ( 'aaa' => 'あああ', 'kakaka' => 'かかか', 'sasasa' => 'さささ', ); $TopName = $allarray{$name}; print $TopName; exit; と変わりませんよね? (ループさせる意味自体がない) 特定の値を代入しているハッシュキーを取得したいなら my $name='あああ'; my %allarray = ( 'aaa' => 'あああ', 'kakaka' => 'かかか', 'sasasa' => 'さささ', ); my $TopName; while(my ($key, $value) = each(%allarray)) { if($name eq $value) { $TopName = $key; last; } } print $TopName; exit; こうなんですけどね。

taku0
質問者

お礼

whillなりforeachでループさせなくても、$allarray{$name}とする事で特定のkeyに対する値を取得できるんですね。 恥ずかしながら、いちいちループさせないと取得できないのかと思っていました。 皆様、お忙しい中、ありがとうございます。

その他の回答 (2)

  • atom_seed
  • ベストアンサー率48% (25/52)
回答No.2

良く分からないんだけど、分からないなりに回答。 $TopName = $mumei->{$name}; $TopName = $allarray{$name};

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

ごめん, 何を考えているのか全く理解できない. 前の foreach の話を, もうちょっと前後を含めて (せめて foreach を入れて) 書いてくれれば, まだ推測のしようもあるんだけど....

関連するQ&A

専門家に質問してみよう