sub fact{ (map{$_[0]*=$_}1..$_[0]-1)[-1]||1 # 33 # only 30 char for numbers bigger than 1 # (map{$_[0]*=$_}1..$_[0]-1)[-1] } #### perl -e "sub fact{$x=$_;$x<0?'E':(map{$x*=$_}1..$x-1)[-1]||1} print map{fact($_),qq(\n)}@ARGV " 0 1 3 -1 1 1 6 E