#!/usr/bin/perl -l use strict; use warnings; my %dispatch=( test1 => sub { print 'test1'; }, test2 => sub { print 'test2'; } ); for(1,2) { $dispatch{"test$_"}->(); } __END__ #### $dispatch{"test$_"}->() for 1,2; #### #!/usr/bin/perl -l use strict; use warnings; my @test=( sub { print 'test0' }, sub { print 'test1' } ); $test[$_]->() for 0,1; # or even $_->() for @test; __END__