#!/usr/bin/perl
use strict;
use warnings;
use Switch;
my $perl = "Perl";
my %hash = ( "A" => 2, "B" => 3 );
my $cref = sub { $_[0] eq "C" };
sub testcase { $_[0] eq "D" };
my @array = (2..4);
my @values=qw[
1 perl Perl 3 6 pErl PerL pERL pERl peRL PERL php
];
foreach my $input (@values) {
switch ($input) {
case 1 { print "literal number" }
case "perl" { print "literal string" }
case ($perl) { print "string variable" }
case (\@array) { print "array variable reference" }
case [5..9] { print "literal array reference" }
case (%hash) { print "hash key" }
case { "PerL" => "Value" } { print "hash reference key" }
case { $_[0] eq "pERL" } { print "anonymous sub" }
case ($cref) { print "anonymous code reference" }
case (\&testcase) { print "named code reference" }
case /^perl/i { print "regular expression" }
else { print "not known" }
}
print "\n";
}