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


in reply to 2 dimensional array question

Note that your assignment is using array slices @arr[0] and @arr[1]. Although it works, you should use $arr[0] and $arr[1] instead because they are not the same thing.

You could use the following method to initialize the 2-d array (use qw // and no commas, I hate to type commas :-)
@arr = ( [ qw/ 1 2 3 / ], [ qw/ 4 5 6 / ] );

Note that [ ... ] builds a reference to an array, it has 0 dimension. While ( ... ) builds an array, which has 1 dimension. When you assign an array to a zero dimension element @arr[0] or $arr[0], it only picks the first element from your array.

And also you could use Data::Dumper to inspect your array afterwards.
use Data::Dumper; @arr = ( [ qw/ 1 2 3 / ], [ qw/ 4 5 6 / ] ); print Dumper(\@arr); # and in your case @arr[0] = qw/ 1 2 3 /; @arr[1] = qw/ 4 5 6 /; print Dumper(\@arr);