#!/usr/bin/perl use warnings; use strict; use Carp; my $input = shift or croak "Give me an argument, fool!\n"; my %action = ( foo => sub { print "fooing\n" }, bar => sub { print "barred\n" }, baz => sub { print "all bazzed out\n" }, ); if (my ($match) = $input =~ m/(foo|bar|baz)/ ){ &{$action{$match}}; } else { croak "Dunno what to do\n"; }