perl -lwe 'sub f { my $n = shift; return $n < 2 ? 1 : $n * f($n-1); } print f(7); eval { print f(8); }; if ( $@ ) { print "eval failed: $@" }'