我正在尝试检查某个哈希元素是否存在。哈希有两个键:
if (exists $hash{$key1}{*})
{
then do blabla
}
所以,在*的地方,我想使用通配符(即,该值可以是任何值)。在这样的情况下,Perl的通配符charachter是什么?非常感谢!
答案 0 :(得分:5)
没有外卡字符。
你可以得到一个像这样的键列表:
my @keys_in_hash = keys %{ $hash{key1} };
...然后您可以检查它是否有长度,使用grep
或其他任何方式进行测试。
答案 1 :(得分:3)
您的原始代码
if (exists $hash{$key1}{*})
{
then do blabla
}
如果你想检查二级哈希是否包含任何键,那么你可以这样做
if (%{$hash{$key1}}) {
# do blabla
}
如果您想要获取与模式匹配的所有键,请说出所有以“foo”开头的键,那么您可以这样做:
my @matching_keys = grep m/^foo/so => keys %{$hash{$key1}};
if (@matching_keys) {
# do something
# matching values are in @{$hash{$key1}}{@matching_keys}
}