#!/usr/bin/perl use warnings; use strict; my $str = "foo" . int rand 3; my %dispatch = ( foo0 => sub { print "running foo0\n"; }, foo1 => sub { print "running foo1\n"; }, foo2 => sub { print "running foo2\n"; }, ); my $code = $dispatch{$str}; $code->();