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

%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";

>あああ
と表示させたいのです

お忙しいかとは存じますがよろしくお願いします。

A 回答 (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;

こうなんですけどね。
    • good
    • 0
この回答へのお礼

whillなりforeachでループさせなくても、$allarray{$name}とする事で特定のkeyに対する値を取得できるんですね。

恥ずかしながら、いちいちループさせないと取得できないのかと思っていました。

皆様、お忙しい中、ありがとうございます。

お礼日時:2008/07/24 18:10

良く分からないんだけど、分からないなりに回答。



$TopName = $mumei->{$name};
$TopName = $allarray{$name};
    • good
    • 0

ごめん, 何を考えているのか全く理解できない.


前の foreach の話を, もうちょっと前後を含めて (せめて foreach を入れて) 書いてくれれば, まだ推測のしようもあるんだけど....
    • good
    • 0

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