use strict; use warnings; sub MakeCounter { my $seed = 0; my $func = sub {return $seed++;}; return $func; } my $counter1 = MakeCounter(); my $counter2 = MakeCounter(); for (1 .. 3) { $counter1->(); $counter2->() for 1 .. 3; } printf "Count 1: %d, Count 2: %d\n", $counter1->(), $counter2->(); #### Count 1: 3, Count 2: 9