首页 > 解决方案 > perl grep 匹配来自哈希表的键

问题描述

我正在处理 Perl 中的哈希。

我使用以下语句来检查变量是否与哈希表中的键匹配。该语句已经评估为真。所以 grep 工作。但是我现在如何检索匹配的哈希键和值?

if ( grep {/.*$var1*/} keys %my_hash ) {
  #print the key and value that results from the grep?
}

标签: perlhash

解决方案


您可以在条件中提取所有匹配的键:

if (my @matches = grep /.*$var1*/, keys %my_hash) {
    my @values = @my_hash{@matches};
}

还有,/.*$var1*/很奇怪。您是否要将最后的星号应用于变量中最后出现的任何内容?此外,.*如果没有/g: ,则在开始时使用/$var1*/不会起作用(并且可能更快)。


推荐阅读