my $n; for (1..10000000) { $n = $_**2; } versus: my $n; for (1..10000000) { state $n = $_**2; } #### #!/usr/bin/perl -w use strict; use 5.10.0; foreach (1..5) { print nextNum(),"\n"; } sub nextNum { state $num =10; return $num++; } __END__ Prints: 10 11 12 13 14