@test[1]=[4,5,6]??構文エラーにはならないけど、普通はこんな書きかたしないよ。
とりあえず「プログラミングPerl」を買って読んだ方がいいね。

で、>>339はその通りにやろうとすると激しく面倒だから多次元配列の簡単な説明だけね。

my @foo = (1, 2, 3); # 通常の配列
my @bar = (\@foo); # barは要素を一つ持つ配列。その唯一の要素は配列への参照(リファレンス)
push @bar, [4, 5, 6]; # barの要素は二つになった。 [ expr, ...] は配列へのリファレンスのリテラル表現

print $bar[0][0]; # barのindex 0をデリファレンス。 1が表示される。
print $bar[1][2]; # 同様に、6が表示される。
$bar[0][0] = 0; # 代入も同様

少しは分かってもらえたかな?
まぁこのあたりはPerlでもCでも凄く難しいところだよね。