Ο πίνακας που ακολουθεί περιέχει όλα όσα χρειάζεται να γνωρίζετε για τις συγκρίσεις μέσω της Perl:
Εργασία |
Αριθμητική σύγκριση |
Σύγκριση strings |
equal |
= = |
eq |
non equal |
!= |
ne |
less than |
< |
lt |
greater than |
> |
gt |
less than or equal |
< = |
le |
greater than or equal |
> = |
ge |
Προσέξτε ότι:
- Η while ($foo = 5) {κώδικα που κάνει κάτι} θα τρέχει για πάντα. Η $foo θα είναι πάντα ίση με 5 επειδή η έκφραση $foo = 5 σημαίνει: «Η $foo να πάρει την τιμή 5». Αυτό που θα έπρεπε να γράψουμε είναι while ($foo = = 5), δηλαδή «όσο η $foo έχει τιμή 5».
- Η έκφραση $foo != $bar είναι σωστή αν οι $foo και $bar περιέχουν αριθμητικές τιμές. Αν όμως περιέχουν κείμενο (κάποια ακολουθία χαρακτήρων), θα πρέπει να δηλώσουμε $foo ne $bar.
Η Perl διαθέτει επίσης λογικούς τελεστές:
Σύνταξη C |
Σύνταξη Perl |
Ερμηνεία |
&& |
and |
AND |
|| |
or |
OR |
! |
not |
NOT |
Η σύνταξη C είναι πιο ισχυρή από τη σύνταξη Perl. Έτσι η Perl θα αξιολογήσει πρώτα το && και μετά το and. Με τον τρόπο αυτό μπορείτε να γλιτώσετε μερικές παρενθέσεις αν χρειάζεστε μια πολύ περίπλοκη λογική διαδικασία. (Υπενθυμίζω ότι οι εκφράσεις μέσα σε παρένθεση αξιολογούνται πριν από της εκτός παρενθέσεων.)
Προσέξτε ότι αν και μπορούμε να δημιουργήσουμε πολύ μεγάλες και πολύπλοκες λογικές φράσεις, η Perl λειτουργεί πάντοτε όσο λιγότερο χρειάζεται για να τις ικανοποιήσει. Για παράδειγμα, αν δηλώσουμε:
$a || $b || $c || $d ||e και ισχύει το $a η Perl δεν θα ασχοληθεί καθόλου με τα υπόλοιπα και θα προχωρήσει παρακάτω.
Τέλος, να θυμάστε πάντοτε την επανάληψη των όρων της σύγκρισης όταν χρησιμοποιείτε λογικούς τελεστές. Το:
( $ilikia > 19 && <= 35 )
είναι λάθος. Σωστό είναι το:
( $ilikia > 19 && $ilikia <= 35 )