in reply to Closures! I pity da fool!

Check for syntax errors in your eval -- looks to me like you're missing a semicolon after \@_ The following code works for me:

sub make_bin_ops { my $op = shift; return eval "sub { \$_[0] $op \$_[1] }"; } my $div = make_bin_ops("/"); my $mult = make_bin_ops("*"); print $div->(2,2),"\n"; print $mult->(2,2),"\n";

perl -pe '"I lo*`+$^X$\"$]!$/"=~m%(.*)%s;$_=$1;y^`+*^e v^#$&V"+@( NO CARRIER'