use warnings; use strict; use B::Deparse; use Data::Dump; use constant DEBUG =>1; BEGIN { unless (DEBUG) { *dmp = sub() { 1; } } else { *dmp = sub($;@){ shift; dd \@_; } } } sub test { #$_="#"; my @a=1..3; dmp/#/, @a; } test(); warn "DEBUG = ",DEBUG,"\n"; print B::Deparse->new()->coderef2text(\&test); #### DEBUG = 0 { use warnings; use strict; my(@a) = 1..3; 1 / @a; } #### Use of uninitialized value $_ in pattern match (m//) at ... line 27. DEBUG = 1 [1, 2, 3] { use warnings; use strict; my(@a) = 1..3; dmp /#/, @a; }