in reply to Passing subroutines as arguments

The arrow operator:
sub a { my ($sub) = @_; $sub->(4) } sub b { print @_ }; a(\&b);
If you're trying to be lisp-like, you probably also want to look into closures:
a( sub {print @_} )
--Dave