Scalar and Text Basics
Comparison Operators
Perl has separate operators for numeric comparisons and string comparisons.
comparison
A comparison expression answers a true-or-false question about two values.
Comparison Operators
comparison_operators.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $score = 12;
my $passes = $score >= 10;
my $passes_text = $passes ? "yes" : "no";
my $label = $score == 12 ? "exact" : "different";
print "score=$score\n";
print "passes=$passes_text\n";
print "label=$label\n";
use strict;
use warnings;
my $score = 7;
my $passes = $score >= 10;
my $passes_text = $passes ? "yes" : "no";
my $label = $score == 12 ? "exact" : "different";
print "score=$score\n";
print "passes=$passes_text\n";
print "label=$label\n";
use strict;
use warnings;
my $score = 20;
my $passes = $score >= 10;
my $passes_text = $passes ? "yes" : "no";
my $label = $score == 12 ? "exact" : "different";
print "score=$score\n";
print "passes=$passes_text\n";
print "label=$label\n";
$score ← 12, $passes ← 1, $passes_text ← yes, $label ← exact
4my $score→ 12 = 12; #@score=7, 205my $passes→ 1 = $score12 >= 10;6my $passes_text→ yes = $passes1 ? "yes" : "no";7my $label→ exact = $score12 == 12 ? "exact" : "different";89print "score=$score12\n";10print "passes=$passes_textyes\n";11print "label=$labelexact\n";outputscore=12 passes=yes label=exact
$score ← 7, $passes ← (empty), $passes_text ← no, $label ← different
4my $score→ 7 = 7;5my $passes→ (empty) = $score7 >= 10;6my $passes_text→ no = $passes(empty) ? "yes" : "no";7my $label→ different = $score7 == 12 ? "exact" : "different";89print "score=$score7\n";10print "passes=$passes_textno\n";11print "label=$labeldifferent\n";outputscore=7 passes=no label=different
$score ← 20, $passes ← 1, $passes_text ← yes, $label ← different
4my $score→ 20 = 20;5my $passes→ 1 = $score20 >= 10;6my $passes_text→ yes = $passes1 ? "yes" : "no";7my $label→ different = $score20 == 12 ? "exact" : "different";89print "score=$score20\n";10print "passes=$passes_textyes\n";11print "label=$labeldifferent\n";outputscore=20 passes=yes label=different
Follow the Comparisons
$scorestarts at12.$score >= 10is true, sopassesbecomesyes.$score == 12is true, solabelbecomesexact.- The program prints
score=12,passes=yes, andlabel=exact. | score | passes | label | | --- | --- | --- | | 7 | no | different | | 12 | yes | exact | | 20 | yes | different |
Exercise: comparison_operators.pl
Reproduce label=exact, then use scores 7 and 20 to predict passes and label.