Perl uses if, elsif, and else to choose one branch from several conditions.

branch A branch is the block of code Perl runs when a condition is true.

If, Elsif, and Else

score
if_elsif_else.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;

my $score = 82;
my $grade;

if ($score >= 90) {
    $grade = "A";
} elsif ($score >= 70) {
    $grade = "pass";
} else {
    $grade = "retry";
}

print "score=$score\n";
print "grade=$grade\n";
use strict;
use warnings;

my $score = 59;
my $grade;

if ($score >= 90) {
    $grade = "A";
} elsif ($score >= 70) {
    $grade = "pass";
} else {
    $grade = "retry";
}

print "score=$score\n";
print "grade=$grade\n";
use strict;
use warnings;

my $score = 95;
my $grade;

if ($score >= 90) {
    $grade = "A";
} elsif ($score >= 70) {
    $grade = "pass";
} else {
    $grade = "retry";
}

print "score=$score\n";
print "grade=$grade\n";
  1. $score ← 82, $grade ← (empty)

    4my $score→ 82 = 82; #@score=59, 955my $grade→ (empty);
  2. $grade ← pass

    8    $grade = "A";9} elsif ($score82 >= 70) {10    $grade→ pass = "pass";11} else {
  3. print "score=$score ";

    15print "score=$score82\n";16print "grade=$gradepass\n";
    outputscore=82
    grade=pass
  1. $score ← 59, $grade ← (empty)

    4my $score→ 59 = 59;5my $grade→ (empty);
  2. $grade ← retry

    10    $grade = "pass";11} else {12    $grade→ retry = "retry";13}
  3. print "score=$score ";

    15print "score=$score59\n";16print "grade=$graderetry\n";
    outputscore=59
    grade=retry
  1. $score ← 95, $grade ← (empty)

    4my $score→ 95 = 95;5my $grade→ (empty);
  2. $grade ← A

    7if ($score95 >= 90) {8    $grade→ A = "A";9} elsif ($score >= 70) {
  3. print "score=$score ";

    15print "score=$score95\n";16print "grade=$gradeA\n";
    outputscore=95
    grade=A

Choose the Grade

  1. $score starts at 82.
  2. The first check, $score >= 90, is false.
  3. The elsif check, $score >= 70, is true.
  4. $grade becomes pass. | Score | First matching branch | Grade | | --- | --- | --- | | 95 | if | A | | 82 | elsif | pass | | 59 | else | retry |

Exercise: if_elsif_else.pl

Use if, elsif, and else to turn a score into A, pass, or retry