BEGIN { package MagicalCoderef; use overload '""' => sub { require B; my $ref = shift; my $gv = B::svref_2object($ref)->GV; sprintf "%s:%d", $gv->FILE, $gv->LINE; }; sub main::Sub (&) { return bless shift, __PACKAGE__; } } my $s = Sub { print +shift }; $s->("hello world\n"); print "$s\n";