perl operátori porovnania môžu byť niekedy pre nových programátorov Perlu mätúci. Zmätok vyplýva zo skutočnosti, že Perl má v skutočnosti dve sady porovnávacích operátorov - jeden na porovnávanie číselné hodnoty a jedna na porovnávanie reťazcov hodnoty American Standard Code for Information Interchange (ASCII).
Keďže operátori porovnávania sa zvyčajne používajú na riadenie logického toku programov a na prijímanie dôležitých rozhodnutí, využívajúc nesprávny operátor pre hodnotu, ktorú testujete, môže viesť k bizarným chybám a hodinám ladenia, ak si nebudete dávať pozor.
Nezabudnite chytiť to, čo je napísané v spodnej časti tejto stránky, aby ste si pamätali niektoré veci na poslednú chvíľu.
Rovnaké, nerovné
Najjednoduchšie a pravdepodobne najpoužívanejšie operátory porovnávania testujú, či sa jedna hodnota rovná inej hodnote. Ak sú hodnoty rovnaké, test vráti true a ak hodnoty nie sú rovnaké, test vráti false.
Na testovanie rovnosti dvoch číselná hodnoty, použijeme operátor porovnávania ==. Na testovanie rovnosti dvoch povrázok hodnoty, použijeme operátor porovnávania eq (Rovnaké).
Tu je príklad oboch:
ak (5 == 5) {print "== pre číselné hodnoty \ n"; }
if ('moe' eq 'moe') {print "eq (EQual) pre hodnoty reťazca \ n"; }
Testovanie opaku, nie rovnaké, je veľmi podobné. Nezabudnite, že tento test sa vráti pravdivý ak sú testované hodnoty nie rovné sebe. Ak chcete zistiť, či dva číselná hodnoty sú nie rovnaké navzájom, použijeme operátor porovnávania !=. Ak chcete zistiť, či dva povrázok hodnoty sú nie rovnaké navzájom, použijeme operátor porovnávania nie (Nerovná sa).
ak (5! = 6) {print "! = pre číselné hodnoty \ n"; }
if ('moe' ne 'curly') {print "nie (Not Equal) pre hodnoty reťazca \ n"; }
Väčšie ako, väčšie ako alebo rovnaké
Teraz sa pozrime na väčší než operátory porovnávania. Pomocou tohto prvého operátora môžete otestovať, či je jedna hodnota väčšia ako iná hodnota. Ak chcete zistiť, či dva číselná hodnoty sú väčšie ako navzájom, použijeme operátor porovnávania >. Ak chcete zistiť, či dva povrázok hodnoty sú väčšie ako navzájom, použijeme operátor porovnávania gt (Väčší než).
ak (5> 4) {print "> pre číselné hodnoty \ n"; }
if ('B' gt 'A') {print "gt (Greater Than) pre hodnoty reťazca \ n"; }
Môžete tiež vyskúšať väčšie alebo rovné, čo vyzerá veľmi podobne. Nezabudnite, že tento test sa vráti pravdivý ak sú testované hodnoty navzájom rovnaké alebo ak je hodnota vľavo väčšia ako hodnota vpravo.
Ak chcete zistiť, či dva číselná hodnoty sú väčšie alebo rovnaké, použijeme operátor porovnávania >=. Ak chcete zistiť, či dva povrázok hodnoty sú väčšie alebo rovnaké, použijeme operátor porovnávania ge (Väčšie ako rovnaké).
ak (5> = 5) {print "> = pre číselné hodnoty \ n"; }
if ('B' ge 'A') {print "ge (väčšie ako rovnaké) pre hodnoty reťazcov \ n"; }
Menej ako, Menej ako alebo Rovnaké
Existuje množstvo operátorov porovnávania, ktoré môžete použiť na určenie logického toku vašich programov Perl. Už sme diskutovali o rozdieloch medzi operátormi numerického porovnávania Perl a operátormi porovnávania reťazcov Perl, čo môže spôsobiť istý zmätok pre nových programátorov Perl. Naučili sme sa tiež, ako zistiť, či sa dve hodnoty navzájom rovnajú alebo nie, a naučili sme sa, ako zistiť, či sú dve hodnoty navzájom väčšie alebo rovnaké.
Pozrime sa na menej ako operátory porovnávania. Pomocou tohto prvého operátora môžete otestovať, či je jedna hodnota menej ako iná hodnota. Ak chcete zistiť, či dva číselná hodnoty sú menej ako navzájom používame operátor porovnávania <. Ak chcete zistiť, či dva povrázok hodnoty sú menej ako navzájom používame operátor porovnávania lt (Menej ako).
ak (4 <5) {print "
if ('A' lt 'B') {print "lt (Less Than) pre hodnoty reťazca \ n"; }
Môžete tiež vyskúšať, menšie alebo rovné, čo vyzerá veľmi podobne. Nezabudnite, že tento test sa vráti pravdivý ak sú testované hodnoty navzájom rovnaké alebo ak je hodnota vľavo menšia ako hodnota vpravo. Ak chcete zistiť, či dva číselná hodnoty sú menšie alebo rovné navzájom používame operátor porovnávania <=. Ak chcete zistiť, či dva povrázok hodnoty sú menšie alebo rovné navzájom používame operátor porovnávania le (Menej ako rovnaké).
ak (5 <= 5) {print "<= pre číselné hodnoty \ n"; }
if ('A' le 'B') {print "le (Menej ako rovnaké) pre hodnoty reťazca \ n"; }
Viac informácií o porovnávacích operátoroch
Keď hovoríme o rovnakých hodnotách reťazcov, hovoríme o ich hodnotách ASCII. Veľké písmená sú teda technicky menšie ako malé písmená a čím vyššie je písmeno v abecede, tým vyššia je hodnota ASCII.
Ak sa snažíte robiť logické rozhodnutia na základe reťazcov, skontrolujte svoje hodnoty ASCII.