次の変数が与えられます:
$test = {
'1' => 'A',
'2' => 'B',
'3' => 'C',
'4' => 'G',
'5' => 'K',
}
どのキーを持っているかを知らなくても、どのようにしてすべての割り当てをループできますか?
選択ボックスに結果をラベルとして、キーを非表示の値として入力したいと思います。
次の変数が与えられます:
$test = {
'1' => 'A',
'2' => 'B',
'3' => 'C',
'4' => 'G',
'5' => 'K',
}
どのキーを持っているかを知らなくても、どのようにしてすべての割り当てをループできますか?
選択ボックスに結果をラベルとして、キーを非表示の値として入力したいと思います。
キーに対してforeachループを実行するだけです。
#!/usr/bin/perl
use strict;
use warnings;
my $test = {
'1' => 'A',
'2' => 'B',
'3' => 'C',
'4' => 'G',
'5' => 'K',
};
foreach my $key(keys %$test) {
print "key=$key : value=$test->{$key}\n";
}
出力:
key=4 : value=G
key=1 : value=A
key=3 : value=C
key=2 : value=B
key=5 : value=K
組み込み関数を使用できますeach
:
while (my ($key, $value) = each %$test) {
print "key: $key, value: $value\n";
}
あなたが持っているキーを見つけることができますkeys
my @keys = keys %$test; # Note that you need to dereference the hash here
または、1回のパスですべてを実行できます。
print map { "<option value='$_'>$test->{$_}</option>" } keys %$test;
しかし、おそらく何らかの順序が必要になるでしょう。
print map { "<option value='$_'>$test->{$_}</option>" } sort keys %$test;
…そして、HTML生成を別のテンプレートシステムに移動する方がほぼ確実に良いでしょう。