use feature 'state'; sub foo { my $n = shift; state $x = 0; print "x: ", $x // '-undef-', "\n"; $x = 1; foo( $n - 1) if $n; } foo(0); foo(0); foo(0); print "\n"; foo(2);