%versions= ( 'linux' => sub { print "This is linux VM\n" }, 'Windows' => sub { print "This is a Windows VM\n" } ); # create this list once before loop my $idlist = join "|", keys %versions; @array = ('linux', 'Windows', 'OSX'); foreach(@array) { if(/$idlist/) { my $id = $&; &{$versions{$id}}(); } else { print "I have no idea what it is\n"; } }