use strict; use warnings; { my $level = 0; sub reset_list_debug { $level = 0 } sub custom_list_debug (&@) { my $code = shift; print "==" x $level, $level ? "> " : '', join(q( ), map($code->($_), @_)), "\n"; $level++; return @_; } sub list_debug { custom_list_debug { "$_" } @_; } } my @letters = list_debug map { lc $_ } list_debug grep { /[AEIOU]/ } list_debug map { uc $_ } list_debug 'a'..'z'; reset_list_debug(); my @letters2 = custom_list_debug { qq("$_") } map { lc $_ } custom_list_debug { qq([$_]) } grep { /[AEIOU]/ } custom_list_debug { qq('$_') } map { uc $_ } custom_list_debug { qq( $_ ) } 'a'..'z'; reset_list_debug();