in reply to Switch.pm or possible alternatives

If your conditions are simple enough you can do it easily:
my $contition = $some_letter; my %dispatch = ( a => sub { # do something with a }, b => \&do_something_with_b, c => ... ); $dispatch{$condition}->();
You could even put the conditions as code blocks, tough I doubt it would make an improvement over a long if .. elsif ... statement:
my @dispatch = ( sub { shift() eq 'a' } => sub { "do something with a" }, sub { shift() == 105 } => sub { "do something with 105" }, ); for (my $i; $i < @dispatch; $i+=2) { $dispatch[$i+1]->() if $dispatch[$i]->($variable); }