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


in reply to Parameters, subs and the shift function

Just one thing to add to what the others said: Although discouraged by some, I personally fancy prototypes. In the following example prototyping the function makes it seem (this "seem" is important) as if you just needed arrays and not references to arrays; the references are automatically generated by Perl.
#!perl use strict; use warnings; sub test ($\@\@) { my $number = shift; my @array1 = @{+shift}; # Shift off the reference, and dereference + it my @array2 = @{+shift}; # Print the variable contents print $number . $/ . join(' - ', @array1) . $/ . join(' - ', @array +2) . $/; } my @a = qw(mary had a little lamb !); my @b = qw(London Bridge is); test (2, @a, @b); __END__ OUTPUT: 2 mary - had - a - little - lamb - ! London - Bridge - is
Have a look at perlsub for an explanation of prototypes. Please note that the above only works for arrays and not for lists.
Hope this helped.