2012-01-03 16 views
3

特定のハッシュ要素が存在するかどうかを確認しようとしています。 *がどこにあるか、私は(つまり、その値は何でもかまいません)、ワイルドカードを使用したい、だから、Perlのハッシュ要素のワイルドカード

if (exists $hash{$key1}{*}) 
{ 
then do blabla 
} 

:私はハッシュのための2つのキーを持っています。このような状況でPerlのワイルドカード文字は何ですか?どうもありがとう!

答えて

5

ワイルドカード文字はありません。

あなたがそうのようなキーのリストを取得することができます:あなたはそれがgrepか何かを使って長さ、テストを持っているかどうかを確認することができます

my @keys_in_hash = keys %{ $hash{key1} }; 

...。

+6

'keys $ hash {key1}'はPerl> = 5.14でしか動作しないことに言及してください。 – Axeman

+3

以前のバージョンでは 'keys {$ hash {key1}}'キーが必要でした。 –

+0

実際には、次のようにする必要があります: 'my @keys_in_hash = keys%{$ hash {$ key1}};' – shawnhcorey

3

あなたの元のコード

if (exists $hash{$key1}{*}) 
{ 
then do blabla 
} 

あなたが第2レベルのハッシュはどんなキーが含まれているかどうかを確認したい場合は、すべてのキーをピックアップしたい場合は、この

if (%{$hash{$key1}}) { 
    # do blabla 
} 

を行うことができますパターンにマッチするもの、たとえば「foo」で始まるすべてのキーを指定すると、次のようになります。

関連する問題