#!/usr/bin/perl use strict; use warnings; my $i = 1; sub counter_i { $i++ } sub counter_gen { my $j = shift; return sub { $j++ } } my @counters = ( \&counter_i, counter_gen(5), counter_gen(10) ); for ( 1 .. 10 ) { for my $c ( @counters ) { print $c->(), " "; } print "\n"; }