fork download
  1. #!/usr/bin/perl
  2.  
  3. # Idiom #280 Filter map
  4.  
  5. use v5.10;
  6.  
  7. %m = ( a=>1, b=>0, c=>0, d=>1, e=>1, f=>0);
  8.  
  9. $predicate = sub { $_[0] }; # test first arg for truth
  10.  
  11. foreach $k (keys %m) {
  12. delete $m{$k} if not $predicate->( $m{$k} );
  13. }
  14.  
  15. foreach my $k (sort keys %m) {
  16. say "$k => $m{$k}";
  17. }
Success #stdin #stdout 0.01s 5476KB
stdin
Standard input is empty
stdout
a => 1
d => 1
e => 1