use warnings; use strict; my $drink; my $punter = 'coffee'; if($punter eq 'coffee'){ $drink = 'non alky'; } if($punter eq 'beer'){ $drink = 'alky'; } if($punter eq 'whisky'){ $drink = 'proper alky'; } else { $drink = 'unknown'; } print $drink; #### unknown #### use warnings; use strict; my $drink; my $punter = 'coffee'; if ('coffee' eq $punter){ $drink = 'non alky'; } elsif ('beer' eq $punter){ $drink = 'alky'; } elsif ('whisky' eq $punter) { $drink = 'proper alky'; } else { $drink = 'unknown'; } print $drink; #### non alky #### use warnings; use strict; my %drinkType = ('coffee' => 'non alky', 'beer' => 'alky', 'whisky' => 'proper alky'); my $drink; my $punter = 'coffee'; if (exists $drinkType{$punter}) { $drink = $drinkType{$punter}; } else { $drink = 'unknown'; } print $drink; #### use warnings; use strict; my %drinkType = ('coffee' => \&doNonalky, 'beer' => \&doAlky, 'whisky' => \&doProperAlky); my $drink; my $punter = 'coffee'; if (exists $drinkType{$punter}) { $drinkType{$punter}->(); } else { print 'unknown'; } sub doNonalky { print 'non alky'; } sub doAlky { print 'alky'; } sub doProperAlky { print 'proper alky'; }