続続続続続・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.

というコンパイルエラーになる。
一時変数に入れないとできない(一時変数を使えばできる)、というのはキレイではないので、なにかやりかたがあるはずだと期待する。しかし、もし、できないとしたら汚い言語だ。