クロージャが簡単につくれていいなと思った。
% cat hoge.pl $counter1 = makecounter(); $counter2 = makecounter(); printf "counter1 = %d\n", $counter1->(); printf "counter1 = %d\n", $counter1->(); printf "counter2 = %d\n", $counter2->(); printf "counter1 = %d\n", $counter1->(); printf "counter2 = %d\n", $counter2->(); sub makecounter{ my $count = 0; sub{ $count++; } } % perl hoge.pl counter1 = 0 counter1 = 1 counter2 = 0 counter1 = 2 counter2 = 1