プログラマメモ2 - programmer no memo2

[perl]配列の配列 2008/09/30

Perlです。

配列の要素に配列を定義しようと思いました。

配列って丸括弧だったようなぁということで

my @arr = ("a", "b", "c", "d");

としました。

次に最初の要素を配列にしたいと思い下記のようにしました。
my @arr = (("0001", "0002", "0003"), "a", "b", "c", "d");

としました。

サイズを表示させてみると5を期待していたのですが、7と表示されてしまいました。

ちなみにPerlで配列の長さは@arrらしいのですが、これを下記のようにすると配列の中身が表示されます。
my @arr = (("0001", "0002", "0003"), "a", "b", "c", "d");
print "content[@arr]\n";
print "size[".@arr."]\n";


うーん、丸括弧に丸括弧だから配列に配列指定している感じがでてると思ったのですが....

次に、四角括弧(!?)を使ったらうまくいきました。
my @arr = (["0001", "0002", "0003"], "a", "b", "c", "d");
print "content[@arr]\n";
print "size[".@arr."]\n";


きっときちんとした理由があるはずです。

参考
配列の配列

配列の配列にアクセスするのは
my @arr = (["0001", "0002", "0003"], "a", "b", "c", "d");
print "content[@arr]\n";
print "size[".@arr."]\n";

#配列にアクセス
print @arr[2]."\n";

#これはだめ
#$print @arr[0][2]."\n";

#これはOK
print $arr[0][2]."\n";


@じゃないんだ...

レファレンスがよく理解できてないからなぁ
もうちょっと追求しよう...

: