3
我想检查某个散列元素是否存在。我有两个密钥的哈希:Perl中散列元素的通配符
if (exists $hash{$key1}{*})
{
then do blabla
}
所以,*的地方,我想使用通配符(即,该值可以是任何东西)。在这种情况下,Perl的通配符字符串是什么?非常感谢!
我想检查某个散列元素是否存在。我有两个密钥的哈希:Perl中散列元素的通配符
if (exists $hash{$key1}{*})
{
then do blabla
}
所以,*的地方,我想使用通配符(即,该值可以是任何东西)。在这种情况下,Perl的通配符字符串是什么?非常感谢!
没有通配符字符。
可以拿到钥匙的列表,像这样:
my @keys_in_hash = keys %{ $hash{key1} };
...然后你就可以检查,看它是否使用grep
或任何具有长度,测试。
你的原代码
if (exists $hash{$key1}{*})
{
then do blabla
}
如果你想检查第二级哈希包含任何键,那么你就可以做到这一点
if (%{$hash{$key1}}) {
# do blabla
}
如果你想拿起所有密钥与模式匹配,说所有开始“富”的键,然后你可以这样做:
my @matching_keys = grep m/^foo/so => keys %{$hash{$key1}};
if (@matching_keys) {
# do something
# matching values are in @{$hash{$key1}}{@matching_keys}
}
你应该提到'keys $ hash {key1}'只适用于Perl> = 5.14。 – Axeman 2012-01-03 12:14:43
对于早期版本,您需要'键%{$ hash {key1}}'。 – 2012-01-03 13:40:50
其实它应该是:'my @keys_in_hash = keys%{$ hash {$ key1}};' – shawnhcorey 2012-01-03 14:26:31