BEGIN { my $static_val = 0; sub gimme_another { return ++$static_val; } } # - OR - in Perl >=5.10: use feature 'state'; sub gimme_another { state $static_val = 0; return ++$static_val; } #### $ perl -e 'my $x if 0' Deprecated use of my() in false conditional. This will be a fatal error in Perl 5.30 at -e line 1.