{ no warnings "uninitialized"; debug("x='$x', y= '$y'"); } #### use v5.10; use warnings; use Data::Dump qw( pp ); sub debug { if (@_ > 1) { say pp { @_ }; } else { say pp $_[0]; } } my $x = 23; my $y; debug([$x, $y]); debug(x => $x, y => $y); debug("Hello"); debug("Hello\n"); __DATA__ [23, undef] { x => 23, y => undef } "Hello" "Hello\n"