in reply to Multi-Dimensional Arrays and Array References
In Perl $, @ and % tell you what you get out of an expression, not what you are putting in. When you declare an array: my @table; the @ tells you this particular variable ("table") is an array. When you write my $value = $table[1]; the $ on each variable tells you you are dealing with scalar values. The table[1] expression accesses the second element of the array "table" and returns a scalar value - arrays only ever store scalars.
Perl allows you to build complex structures by providing references to things. So an array can be an array of references to arrays - your case. The usual way to do that would be:
my @table = ([1, 2, 3], [4, 5, 6]);
An array of arrays. You can then iterate over all the elements by:
for my $row (@table) { for my $cell (@$row) { printf "%4d", $cell; } print "\n"; }
or, this being Perl you could:
print "@$_\n" for @table;
|
|---|