sub switch ($$); for my $var (1..4) { my $i; switch $var => { 1 => sub { $i = "One"}, 2 => sub { $i = "Two"}, 3 => sub { $i = "Three"}, '' => sub { $i = "Other"}, }; print "$var is $i\n"; } sub switch ($$) { my ($case, $href) =@_; if ( exists $href->{$case} ) { $href->{$case}->(); } else { $href->{''}->(); } }