my $age = 22; if ($age < 13) { print "You aren't old enough to be a teenager"; } elsif ($age < 20) { print "You are a teenager"; } else { print "You're too old to be a teenager"; }Multiple elsif statements may be used within this block. If there are many possibilities to handle, it may be more readable to use a type of SWITCH statement - one example is as follows:
my $age = 22; SWITCH: { ($age < 13) and do { print "You're too young to be a teenager"; last SWITCH; }; ($age < 20) and do { print "You're a teenager"; last SWITCH; }; print "You're too old to be a teenager"; }Here, we use a named block (in this example, called SWITCH), in which various conditions are tested for. If one is met, the statements within the following do{} block are executed - note the use of the last SWITCH statement to force termination of the rest of the block. The last statement within the block is a default, which will be executed if none of the previous conditions are met.
As for loops, it is possible to next if/elsif/else blocks inside of each other. Again as for loops, it is very good practice to get into the habit of indenting things. The following code
my $i = 3; my $j = 12; my $k = 0; if ($i < 30) { if ($j > 32) { $k = 22; } else { $k = 98; } else { $k = 321; }is much easier to read and to follow the logic of than
my $i = 3; my $j = 12; my $k; if ($i < 30) { if ($j > 32) { $k = 22; } else { $k = 98; } else { $k = 321; }or even
my $i = 3; my $j = 12; my $k; if ($i < 30) { if ($j > 32) { $k = 22; } else { $k = 98; } else { $k = 321;}even though all three examples will mean the same to Perl.