Perl sammenligningsoperatører kan noen ganger være forvirrende for nye Perl-programmerere. Forvirringen stammer fra det faktum at Perl faktisk har to sett med sammenligningsoperatører - ett for å sammenligne numeriske verdier og en for sammenligning av amerikanske standardkoder for informasjonsutveksling (ASCII) -verdier.
Siden sammenligningsoperatører vanligvis brukes til å kontrollere logisk programflyt og ta viktige beslutninger ved å bruke feil operatør for verdien du tester kan føre til bisarre feil og timer med feilsøking, hvis du ikke er forsiktig.
Ikke glem å få med deg det som er skrevet helt nederst på denne siden for ting å huske i siste øyeblikk.
Like, ikke like
De enkleste og sannsynligvis mest brukte sammenligningsoperatørene tester for å se om en verdi er lik en annen verdi. Hvis verdiene er like, returnerer testen sann, og hvis verdiene ikke er like, returnerer testen falsk.
For å teste likheten mellom to numerisk verdier, bruker vi sammenligningsoperatøren ==. For å teste likheten mellom to string verdier, bruker vi sammenligningsoperatøren ekv (Lik).
Her er et eksempel på begge:
if (5 == 5) {print "== for numeriske verdier \ n"; }
if ('moe' eq 'moe') {skriv ut "eq (EQual) for strengverdier \ n"; }
Å teste for det motsatte, ikke like, er veldig likt. Husk at denne testen kommer tilbake ekte hvis de testede verdiene er ikke lik hverandre. For å se om to numerisk verdiene er ikke lik hverandre, bruker vi sammenligningsoperatøren !=. For å se om to string verdiene er ikke lik hverandre, bruker vi sammenligningsoperatøren ne (Ikke lik).
if (5! = 6) {print "! = for numeriske verdier \ n"; }
if ('moe' ne 'krøllete') {print "ne (Ikke lik) for strengverdier \ n"; }
Større enn, større enn eller lik
La oss se på større enn sammenligningsoperatører. Ved hjelp av denne første operatøren kan du teste for å se om en verdi er større enn en annen verdi. For å se om to numerisk verdiene er større enn hverandre, bruker vi sammenligningsoperatøren >. For å se om to string verdiene er større enn hverandre, bruker vi sammenligningsoperatøren gt (Større enn).
if (5> 4) {print "> for numeriske verdier \ n"; }
if ('B' gt 'A') {skriv ut "gt (Greater Than) for strengverdier \ n"; }
Du kan også teste for større enn eller lik, som ser veldig lik ut. Husk at denne testen vil komme tilbake ekte hvis verdiene som er testet er lik hverandre, eller hvis verdien til venstre er større enn verdien til høyre.
For å se om to numerisk verdiene er større enn eller lik hverandre, bruker vi sammenligningsoperatøren >=. For å se om to string verdiene er større enn eller lik hverandre, bruker vi sammenligningsoperatøren ge (Større enn lik-til).
if (5> = 5) {print "> = for numeriske verdier \ n"; }
if ('B' ge 'A') {skriv ut "ge (Greater-than Equal-to) for strengverdier \ n"; }
Mindre enn, mindre enn eller lik
Det er en rekke sammenligningsoperatører du kan bruke til å bestemme den logiske flyten for Perl-programmene dine. Vi har allerede diskutert forskjellen mellom operatørene for numerisk sammenligning av Perl og sammenligningsoperatørene til Perl-strengene, noe som kan forårsake litt forvirring for nye Perl-programmerere. Vi har også lært hvordan vi kan fortelle om to verdier er like eller ikke lik hverandre, og vi har lært hvordan vi kan fortelle om to verdier er større enn eller lik hverandre.
La oss se på mindre enn sammenligningsoperatører. Ved hjelp av denne første operatøren kan du teste for å se om en verdi er mindre enn en annen verdi. For å se om to numerisk verdiene er mindre enn hverandre bruker vi sammenligningsoperatøren <. For å se om to string verdiene er mindre enn hverandre bruker vi sammenligningsoperatøren lt (Mindre enn).
if (4 <5) {skriv ut "
if ('A' lt 'B') {skriv ut "lt (Mindre enn) for strengverdier \ n"; }
Du kan også teste for, mindre enn eller lik, som ser veldig lik ut. Husk at denne testen kommer tilbake ekte hvis verdiene som er testet er lik hverandre, eller hvis verdien til venstre er mindre enn verdien til høyre. For å se om to numerisk verdiene er mindre enn eller lik hverandre bruker vi sammenligningsoperatøren <=. For å se om to string verdiene er mindre enn eller lik hverandre bruker vi sammenligningsoperatøren le (Mindre enn lik).
if (5 <= 5) {print "<= for numeriske verdier \ n"; }
if ('A' le 'B') {print "le (Mindre enn lik-til) for strengverdier \ n"; }
Mer informasjon om sammenligningsoperatører
Når vi snakker om at strengverdier er lik hverandre, viser vi til ASCII-verdiene deres. Så store bokstaver er teknisk sett mindre enn små bokstaver, og jo høyere bokstaven er i alfabetet, jo høyere er ASCII-verdien.
Forsikre deg om at du sjekker ASCII-verdiene dine hvis du prøver å ta logiske avgjørelser basert på strenger.