http://www.perlmonks.org?node_id=918588


in reply to Re^2: trouble understanding code, and shift() w.o args
in thread trouble understanding code, and shift() w.o args

Yes, that's how you'd add a third argument. You would need to also add a third shift in the subroutine to use it.

Perl's handling of parameters to subroutines is strange; every other language I have used requires the parameters be listed in the subroutine definition. I have often seen

sub translate { my ($noun, $verb, $object) = @_; my $german = "$noun $object $verb"; return($german); }

in order to document what the subroutine expects: 1) three arguments, 2) in the order noun, verb, object. Also, that would be less confusing to a novice Perl programmer because it explicitly names @_, instead of assuming you know about it. Which, of course, now you do.