package CodeNRef; use overload q{""} => \&print_code, q{&{}} => \&call; sub new { my( $class, $code ) = @_; my $ref = eval qq{ sub { $code } }; return bless { code => $code, compiled => $ref }, $class; } sub print_code { shift()->{code} } sub call { shift()->{compiled} } 1;