use strict; use warnings; sub fact { my ($n) = @_; return 1 if $n == 0; return $n * fact($n-1); } die "usage\n" if !@ARGV; print(fact($ARGV[0]), "\n");