Respawning Factorial
Perl, 95

 

$m=1;$n=12||die$m;@ARGV=$0;$_=&lt;&gt;;$m*=$n--;s/\|/;\$m=$m;\$n=$n|/;open _,"&gt;$0";print _;exec$^X,$0


The program really has to be on a single line, and overwrites itself at each iteration.