在Perl中使用一个哈希引用而不是两个

时间:2013-09-11 19:03:35

标签: perl

在Perl中是否有某种方式我可以在第二行提及一次k:

my %k = (a=>1, b=>2, c=>undef);
say for grep{!$k{$_}} keys %k;

3 个答案:

答案 0 :(得分:4)

是:

$b or say $a while ($a,$b) = each %k

但那不是更好(更糟的是,IMO),所以我会坚持你所拥有的。

答案 1 :(得分:4)

使用CPAN模块mapp中的greppList::Pairwise

use List::Pairwise qw(grepp mapp);
my %k = (a=>1, b=>2, c=>undef);
say for mapp { $a } grepp { !$b } %k;

答案 2 :(得分:2)

使用each

my %k = ( a => 1, b => 2, c => undef ); 
while ( my ($i, $j) = each %k ) { say $i unless $j };