Perl jämförelseoperatörer kan ibland vara förvirrande för nya Perl-programmerare. Förvirringen härrör från det faktum att Perl faktiskt har två uppsättningar av jämförelseoperatörer - en för att jämföra numeriska värden och ett för att jämföra strängvärden American Standard Code for Information Interchange (ASCII).
Eftersom jämförelseoperatörer vanligtvis används för att kontrollera logiskt programflöde och fatta viktiga beslut med hjälp av fel operatör för det värde du testar kan leda till bisarra fel och timmar med felsökning om du inte är försiktig.
Glöm inte att fånga det som är skrivet längst ner på denna sida för några saker i sista minuten att komma ihåg.
Lika, inte lika
De enklaste och förmodligen mest använda jämförelsearbetarna testar för att se om ett värde är lika med ett annat värde. Om värdena är lika, returnerar testet sant, och om värdena inte är lika, returnerar testet falskt.
För att testa jämställdheten mellan två numerisk värden använder vi jämförelsesoperatören ==. För att testa jämställdheten mellan två
sträng värden använder vi jämförelsesoperatören ekv (Likvärdig).Här är ett exempel på båda:
if (5 == 5) {print "== för numeriska värden \ n"; }
if ('moe' eq 'moe') {skriva ut "eq (EQual) för strängvärden \ n"; }
Att testa för det motsatta, inte lika, är mycket lika. Kom ihåg att testet kommer tillbaka Sann om de testade värdena är inte lika med varandra. För att se om två numerisk värden är inte lika med varandra, använder vi jämförelsesoperatören !=. För att se om två sträng värden är inte lika med varandra, använder vi jämförelsesoperatören ne (Inte jämnlikt).
if (5! = 6) {print "! = för numeriska värden \ n"; }
if ('moe' ne 'lockigt') {print "ne (Inte lika) för strängvärden \ n"; }
Större än, Större än eller lika med
Låt oss nu titta på större än jämförelseoperatörer. Med den här första operatören kan du testa om ett värde är större än ett annat värde. För att se om två numerisk värden är större än varandra, vi använder jämförelseoperatören >. För att se om två sträng värden är större än varandra, vi använder jämförelseoperatören gt (Större än).
if (5> 4) {print "> för numeriska värden \ n"; }
if ('B' gt 'A') {skriv ut "gt (större än) för strängvärden \ n"; }
Du kan också testa för större än eller lika med, som ser väldigt lika ut. Tänk på att detta test kommer att återgå Sann om de testade värdena är lika med varandra, eller om värdet till vänster är större än värdet till höger.
För att se om två numerisk värden är större än eller lika med varandra, vi använder jämförelseoperatören >=. För att se om två sträng värden är större än eller lika med varandra, vi använder jämförelseoperatören gE (Större än lika med).
if (5> = 5) {print "> = för numeriska värden \ n"; }
if ('B' ge 'A') {print "ge (Greater-than Equal-to) för strängvärden \ n"; }
Mindre än, mindre än eller lika med
Det finns en mängd jämförelser som du kan använda för att bestämma det logiska flödet för dina Perl-program. Vi har redan diskuterat skillnaden mellan operatörerna för numerisk jämförelse av Perl och Perl-strängen jämförelser, vilket kan orsaka viss förvirring för nya Perl-programmerare. Vi har också lärt oss hur man säger om två värden är lika med eller inte lika varandra, och vi har lärt oss hur man säger om två värden är större än eller lika med varandra.
Låt oss titta på mindre än jämförelseoperatörer. Med den här första operatören kan du testa om ett värde är mindre än ett annat värde. För att se om två numerisk värden är mindre än varandra använder vi jämförelsesoperatören <. För att se om två sträng värden är mindre än varandra använder vi jämförelsesoperatören lt (Mindre än).
if (4 <5) {skriv ut "
if ('A' lt 'B') {skriv ut "lt (Mindre än) för strängvärden \ n"; }
Du kan också testa för, mindre än eller lika med, som ser väldigt lika ut. Kom ihåg att testet kommer tillbaka Sann om de testade värdena är lika med varandra, eller om värdet till vänster är mindre än värdet till höger. För att se om två numerisk värden är mindre än eller lika med varandra använder vi jämförelsesoperatören <=. För att se om två sträng värden är mindre än eller lika med varandra använder vi jämförelsesoperatören le (Mindre än lika med).
if (5 <= 5) {print "<= för numeriska värden \ n"; }
if ('A' le 'B') {print "le (Mindre än lika med) för strängvärden \ n"; }
Mer information om jämförande operatörer
När vi talar om att strängvärden är lika med varandra hänvisar vi till deras ASCII-värden. Så, stora bokstäver är tekniskt mindre än med små bokstäver, och ju högre bokstaven är i alfabetet, desto högre är ASCII-värdet.
Se till att du kontrollerar dina ASCII-värden om du försöker fatta logiska beslut baserat på strängar.