続続続続続・Perl
http://d.hatena.ne.jp/unibon/20030919 の続きだが、入門書を見ていろいろ試していたら、
use strict; my @a0 = (0, 1, 2, 3); my @a1 = (10, 11, 12); my @a2 = (20, 21); my @x = (\@a0, \@a1, \@a2); for (my $i = 0; $i < scalar @x; $i++) { my $k = $x[$i]; for (my $j = 0; $j < scalar @$k; $j++) { my $p = $x[$i]->[$j]; if ($j > 0) { print ", "; } print $p; } print "\n"; }
とやるとできた。しかし、
for (my $j = 0; $j < scalar @$x[$i]; $j++) {
はだめだ。これだと、
Global symbol "$x" requires explicit package name.
というコンパイルエラーになる。
一時変数に入れないとできない(一時変数を使えばできる)、というのはキレイではないので、なにかやりかたがあるはずだと期待する。しかし、もし、できないとしたら汚い言語だ。