看起来我应该可以用地图做到这一点,但实际的细节让我望而却步.
我有一个数组中的字符串列表,零或其中一个可能有一个哈希值.
所以不要这样做:
foreach $str ( @strings ) {
$val = $hash{$str} if $hash{$str};
}
Run Code Online (Sandbox Code Playgroud)
可以使用地图替换为单线程吗?
@values = grep { $_ } @hash{@strings};
Run Code Online (Sandbox Code Playgroud)
考虑到你只想要真正价值的事实.
将此更改为
@values = grep { defined } @hash{@strings};
Run Code Online (Sandbox Code Playgroud)
如果你想跳过未定义的值.