in reply to reference question

Looks to me like the second example is wrong. First, understand that the first example really is a shortcut for
my $myarray = shift @_;
Once you see that, it makes sense that $myarray contains the first element in @_ (which is the first argument passed to the subroutine).

So, the second example would assign a '1' to $myarray, because when you assign an array to a scalar, you get the number of the elements of the array.

Here is a test script for you to play with:

use strict; use Data::Dumper; sub foo { my $ref = shift; print Dumper $ref; } sub bar { my $ref = @_; print Dumper $ref; } my @ary = qw(a b c d e f); my $ref = [ qw(a b c d e f) ]; foo(@ary); foo($ref); bar(@ary); bar($ref);

----------------------------------------------------
 perl -le '$x="jeff";$x++ for(0..4482550);print $x'
----------------------------------------------------