perl:使用map从哈希中获取值

chr*_*ris 1 perl

看起来我应该可以用地图做到这一点,但实际的细节让我望而却步.

我有一个数组中的字符串列表,零或其中一个可能有一个哈希值.

所以不要这样做:

foreach $str ( @strings ) {
  $val = $hash{$str} if $hash{$str};
}
Run Code Online (Sandbox Code Playgroud)

可以使用地图替换为单线程吗?

Sin*_*nür 6

@values = grep { $_ } @hash{@strings};
Run Code Online (Sandbox Code Playgroud)

考虑到你只想要真正价值的事实.

将此更改为

@values = grep { defined } @hash{@strings};
Run Code Online (Sandbox Code Playgroud)

如果你想跳过未定义的值.