package main; my $foo = bless sub { $_[0] =~ /foo/ }, FunkOpera; my $bar = sub {"bar"}; my %funk; @funk{qw/foonbar foorbar barnfoo barrfoo/} = ($foo & $bar, $foo | $bar, $bar & $foo, $bar | $foo); for (keys %funk) { print qq($_("food") returns ), $funk{$_}->('food'}, $/; print qq($_("ford") returns ), $funk{$_}->('ford'}, $/; } __END__ foorbar("food") returns 1 foorbar("ford") returns bar barnfoo("food") returns 1 barnfoo("ford") returns foonbar("food") returns bar foonbar("ford") returns barrfoo("food") returns bar barrfoo("ford") returns bar