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

score
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";
  1. $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
  1. $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
  1. $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

  1. $score starts at 12.
  2. $score >= 10 is true, so passes becomes yes.
  3. $score == 12 is true, so label becomes exact.
  4. The program prints score=12, passes=yes, and label=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.