素因数分解ワンライナー

1行素因数分解 - すぎゃーんメモで挑戦した、ワンライナー素因数分解
今日ふと、サブルーチンを定義して再帰的に処理することなくやる方法が思い浮かんだ。
より短くエレガントに(?)なった気がする。

$ perl -e '$n = pop; print "$a[0] * " and $n /= $a[0] while @a = grep { !($n % $_) } (2 .. $n - 1); print $n, "\n"' 2009

while文が回るたびに毎回そのときの$nに応じたサイズの配列を生成することになるので、大きな数を入力すると大変なことになるw
けど、小さな数字なら十分なスピードでしっかり素因数分解される。はず。
もっと良い方法はあるかなー。