我正在处理Perl中的哈希。
我使用以下语句来检查变量是否与哈希表中的键匹配。该陈述已经评估为真。所以grep工作。但是,如何在匹配时检索哈希键和值?
if ( grep {/.*$var1*/} keys %my_hash ) {
#print the key and value that results from the grep?
}
您可以在以下条件中提取所有匹配的键:
if (my @matches = grep /.*$var1*/, keys %my_hash) {
my @values = @my_hash{@matches};
}
此外,/.*$var1*/
很奇怪。您想将最终的星号应用于变量中的最后一个吗?另外,如果没有.*
,那么在开始时使用/g
什么都不做:/$var1*/
的工作方式相同(也许更快)。
if (@captarr= grep {/.*$var1*/} keys %my_hash ) {
}
@captarr = grep (/.*$var1*/, keys %my_hash)
是一个2参数函数;
第一个是正则表达式,第二个是正则表达式应用的数组,
返回匹配的数组就像第二个arg一样。 array是一个由数组组成的字符串,在全局搜索,如果没有匹配则返回nul。它类似于@captarr = $my_str ~= /.*$var1*/
,具有LHS~ = RHS的交换参数位置