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")