use strict; use warnings; my @arr1 = qw{ tom harry diana nick sally henry }; my $iterator = do { my $idx = -1; my @actions = ( sub { print qq{$_[ 0 ] plays\n} }, sub { print qq{$_[ 0 ] eats\n} }, sub { print qq{$_[ 0 ] sleeps\n} }, ); sub { $idx ++; $idx = 0 if $idx > $#actions; &{ $actions[ $idx ] }; }; }; $iterator->( $_ ) for @arr1;