Da Perl alle Datentypen für eine Variable zuläßt, muß man Perl bei einem Vergleich mitteilen, was für einen Datentyp man vergleichen möchte. Die Vergleichsoperatoren für Zahlen arbeiten auch auf Strings und umgekehrt. Der String wird vor dem Vergleich in eine Zahl umgewandelt, was zu unerwarteten Ergebnissen führen kann.
<typocode>
eq gleich (equal)
ne ungleich (not equal)
ge größer gleich (greater or equal)
gt größer (greater)
le kleiner gleich (less or equal)
lt kleiner (less)
cmp Vergleich (compare)
</typocode>
Ein Beispiel:
<typocode>
perl -e 'print "a" eq "a", "\n"'
perl -e 'print "h" eq "a", "\n"'
perl -e 'print "h" == "a", "\n"'
</typocode>
Die Ergebnisse sind für den ersten und dritten Test "1". Der zweite Test liefert "undef" - eine scheinbar leere Ausgabe.
Die Operatoren &&, || und ! haben eine höhere Auswertungspriorität als die ansonsten gleichwertigen englischen Ausdrücke.
<typocode>
&& and - UND-Verknüpfung
|| or - ODER-Verknüpfung
! not - NEGATION der Aussage
</typocode>