1

私はPerlを初めて使用し、ハッシュで何かを試しています。以下のようなハッシュのハッシュがあります。

%HoH =   
(
    "Test1" => { checked => 1, mycmd => run1 },
    "Test2" => { checked => 1, mycmd => run2 },
)

以下のコードを使用すると、以下の出力が得られます。

for $family ( keys %HoH ) 
{
    print "$family: ";
    for $role ( keys %{ $HoH{$family} } ) 
    {
        print "$role=$HoH{$family}{$role} ";
    }
    print "\n";
}

出力:

Test1: checked=1 mycmd=run1 
Test2: checked=1 mycmd=run2

私の質問は、どうすれば個別にアクセスできますcheckedcmd? 別々にアクセスすることで、チェックされているものを比較して自分のタスクを実行できます。

4

2 に答える 2

3

キーワードを文字どおりに使用するのは非常に簡単です。

%HoH =   
(
    "Test1" => { checked => 1, cmd => run1 },
    "Test2" => { checked => 1, cmd => run2 },
);
if ($HoH{"Test1"}{checked}) {
print "Test1 is Checked with cmd: " . $HoH{"Test1"}{cmd} . "\n";
}

Test1 は cmd: run1 でチェックされます

あなたの質問を正しく理解しましたか?

于 2012-12-27T16:40:45.130 に答える
1
for my $family ( keys %HoH )
{
    if ($HoH{$family}->{checked}) {
         # Do what you want...
    }
}
于 2012-12-27T20:48:52.493 に答える