use strict; use warnings; use experimental 'signatures'; use Nice::Try; sub foo { 1 } try { my $k = sub ($f = foo()) {}; } catch ($e) { warn "caught: $e"; } __END__ Global symbol "$e" requires explicit package name (did you forget to declare "my $e"?) at bad-syntax.pl line 10. syntax error at bad-syntax.pl line 10, near ") {" Execution of bad-syntax.pl aborted due to compilation errors.