my $x = 42; assert '$x > 40'; # assertion fails, # because eval can't see $x #### sub assert (&) { require Carp; (shift)->() ? 1 : Carp::croak('Assertion failed') } my $x = 42; assert { $x > 40 }; # assertion ok #### sub TRUE () { 1 } sub FALSE () { 0 } sub EXIT_SUCCESS () { TRUE }