カッコつけないPerl、カッコつけすぎなPerl

http://e-arrows.sakura.ne.jp/2010/08/is-lisp-really-has-too-many-parenthesis.html
perlでカッコを使わないように階乗を計算するにはどうしたら良いんだろう?
再帰を使うとどうしてもサブルーチン定義で"{", "}"を使うことになってしまいそう、じゃあ後置for文とかmapとかでループまわして全部かけ算かな、と

eval q#$a=1;$a*=$_ for 1..$_;print"$_! = $a\n"#for 1..pop||1
map s//$a=1;map$a*=$_,1..$_;print"$_! = $a\n"/e,1..pop||1

とか考えてみた。一応0個。うーん、これくらいしか思いつかない。
もしくは

use Math::Pari 'ifact';printf"$_! = %s\n",ifact$_ for 1..pop||1

とか!

''!~('(?{'.('!){(?)?[]}){)![^()}()^!)}(}!}^}^([^!{)^})(!]{^}^()!}}!!(})}}!))[[}'^'[?(([()?()^()^}{??^^)!^(}{?[))~{}}!.}((~]}}(()(!}}((?[)^?}{}([!!!['^'?^^}(^))({})?}(?[^()?}}^!^()!{}?^}?^[^{!}(?(^?!?^)^]()[{}}?~{}}}{?'^'()}]))^!}^)^^??!!){{^(?{~![}[(!!{))?)})}(]^}))(.)^{([}})~{~()?({}(').'})')

ってやったら157個もカッコがついちゃった ><


http://gist.github.com/550023