in reply to reference question
Once you see that, it makes sense that $myarray contains the first element in @_ (which is the first argument passed to the subroutine).my $myarray = shift @_;
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' ----------------------------------------------------
|
|---|