# Given: sub pair { my @out = (); for (my $i=0; $i<@_; $i+=2) { push(@out,[$_[$i],$_[$i+1]]); } return @out; } # What is the value of the expression map { &{$_->[1]}($_->[2]) ? $_->[0] : () } map { [$_->[0],$_->[1],'meowmoo'] } &pair ( 'cat' => sub { $_[0] =~ /meow/ }, 'dog' => sub { $_[0] =~ /arf/ }, 'cow' => sub { $_[0] =~ /moo/ } ) # in an array context?