or1ko's diary

日々を書きます

perlの多次元配列の話

ご指摘感謝!
また,指摘を食らってしまった.
2次元配列をハッシュでごまかすことは知っていたのですが,配列的に書いたら期待通り動いたので,配列的な書き方でもいいのかと思ってました.
警告をつけないとダメですね.Haskellの時に言われたのに僕はw.これはaliasで指定しまくるしかないわ.もうコンパイラとか,ディフォで警告表示してくれw.

指摘のほうに戻ると,2つめのサンプルコードは多次元配列をサポートしてないという警告だと分かるのですが,1つ目のサンプルコードの動作が分からない.

perl -e '$a[0, 1] = 10; print $a[1], $/;'
10

なんで10なんだろ.いろいろ試してみたところ,下のような動き.

$ perl -w -e "$a[1, 2, 3] = 10; print $a[1], $a[2], $a[3];"
Multidimensional syntax $a[1, 2, 3] not supported at -e line 1.
Useless use of a constant in void context at -e line 1.
Use of uninitialized value in print at -e line 1.
Use of uninitialized value in print at -e line 1.
10

つまり,$a[1,2,3] = 10 は $a[3] = 10 として評価されている,ということでいいのかな.