Use el módulo Switch (no es necesario en las versiones posteriores a la 5.10):
lhp@europa:~/projects/perl/src/perltesting$ cat switch.pl
#!/usr/bin/perl -w
use strict;
use Perl6::Say;
use Switch;
my $val = <>;
chomp($val);
switch ($val) {
  case 1          { say "number 1" }
  case "a"        { say "string a" }
  case [1..10,42] { say "number in list" }
  case /^\w+$/    { say "pattern" }
  else            { say "previous case not true" }
}
Veamos algunas ejecuciones:
lhp@europa:~/projects/perl/src/perltesting$ ./switch.pl 5 number in list lhp@europa:~/projects/perl/src/perltesting$ ./switch.pl 12bc pattern lhp@europa:~/projects/perl/src/perltesting$ ./switch.pl .2. previous case not true
Casiano Rodríguez León
