use warnings; use strict; use feature 'say'; use Data::Dump 'pp'; sub mylc (_) { print "in=", pp @_; return lc $_[0] } sub mylc2 { # no prototype for comparison print "in=", pp @_; return lc $_[0] } #### say "lc: out=", pp( lc "A","B" ); print "mylc: "; say " out=", pp( mylc "A","B" ); print "mylc2: "; say " out=", pp( mylc2 "A","B" ); # lc: out=("a", "B") # mylc: in="A" out=("a", "B") # mylc2: in=("A", "B") out="a" #### my @x=qw/ X Y Z /; say "lc: out=", pp( lc @x,"B" ); print "mylc: "; say " out=", pp( mylc @x,"B" ); print "mylc2: "; say " out=", pp( mylc2 @x,"B" ); # lc: out=(3, "B") # mylc: in=3 out=(3, "B") # mylc2: in=("X", "Y", "Z", "B") out="x" #### $_ = 'Z'; say "lc: out=", pp( lc,"B" ); print "mylc: "; say " out=", pp( mylc,"B" ); print "mylc2: "; say " out=", pp( mylc2,"B" ); # lc: out=("z", "B") # mylc: in="Z" out=("z", "B") # Use of uninitialized value $_[0] in lc at example.pl line 12. # mylc2: in=() out=("", "B")