Fir a start that probably doesn't do what you mean. Consider:
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;
Prints:
unknown
Better would be:
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;
which prints:
non alky
as expected. However probably better still would be:
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;
If you have more work to do for each if clause you could:
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'; }
In reply to Re: Simple IF, IF, IF or ELSE
by GrandFather
in thread Simple IF, IF, IF or ELSE
by abachus
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |