Till Startsidan
JavaScript.nu / Perl-kurs / Logiska uttryck

LÄR DIG ATT PROGRAMMERA PERL
Logiska uttryck

Har du tidigare programmerat kommer detta kapitel vara ganska lätt för dig. Det vi nu ska lära oss är hur man använder logiska operatorer och vad if- och unless-satser är.
Eftersom jag vet att många av er som läser detta även kan JavaScript ska jag dra paralleller dit, fast det är givetvis inget krav att du förstår dig på detta för att kunna hänga med i detta kapitel.

Till att börja med:
Med if-satser kan man låta ett program utföra olika saker beroende på vad som har hänt tidigare i programmet. Programmet kan jämföra t.ex. två variabler och efter att ha gjort detta avgöra vad som ska ske härnäst.
Exemplet nedan beskriver ett sätt man kan använda if-satser på:

#!/usr/bin/perl
print "Content-type:text/html\n\n";

if ("hej" eq "hej")	#Om "hej" är samma sak som "hej" så körs det efter klamrarna nedan
{
print "hej är samma sak som hej.\n";	#detta ska alltså köras om "hej" är samma sak som "hej"
}

if (1+1 == 3)	#Är 1+1 lika med 3? OM det är sant körs det mellan klamrarna nedan...
{
print "1+1 är samma sak som 3.";	#...Alltså körs detta klamrar.
}
else	#ANNARS, dvs om det inom if INTE är sant, körs det mellan klamrarna nedan...
{
print "1+1 är inte samma sak som 3.";	#Alltså körs denna rad om 1+1 INTE är lika med 3.
}


Utmatning:
hej är samma sak som hej.
1+1 är inte samma sak som 3.
Om det som står inom if är sant, sker det som står mellan de första klamrarna ({ och }) efter if. Vill vi kan vi även ha ett else efter klamrarna och efter detta else ytterligare ett par klamrar. I så fall sker det som står efter det andra paret klamrar då (och bara då) det som stod inom if är falskt (=inte sant).
I vårt exempel kollar scriptet först om strängen "hej" är samma sak som strängen "hej", och det är det ju, då sker det som står mellan de första klamrarna, alltså: print "hej är samma sak som hej.\n";.
I vårt andra fall kollas om 1+1 är lika med 3. Detta är INTE sant (det är ju falskt), därför sker inte det som står mellan de första klamrarna (dvs, denna rad körs aldrig: print "1+1 är samma sak som 3.\n";). Istället har jag en else efter klamrarna, vilket gör att om det som står inom if är falskt (vilket det var i vårt fall, eftersom 1+1 är 2) så körs det som står efter klamrarna som kommer efter else. Inom dessa klamrar står det: print "1+1 är inte samma sak som 3.";

Du undrar säkert varför jag i det första exemplet hade eq och i det andra ==. Detta beror på att det i det första exemplet var två textsträngar och i det andra två tal. Detta kan dock verka som lite av en överkurs, så förstår du inte skillnaden mellan en sträng och ett tal, strunt i denna skillnad.
Mitt råd är att du endast använder eq i sådana fall.
Bra att veta:
Strängar och tal jämförs med olika jämförelseoperatorer:
Som tal		Som sträng	På svenska
$a == $b		$a eq $b		$a är lika med $b
$a != $b		$a ne $b		$a är inte lika med $b
$a > $b		$a gt $b		$a är större än $b
$a >= $b		$a ge $b		$a är större eller lika med $b
$a < $b		$a lt $b		$a är mindre än $b
$a <= $b		$a le $b		$a är mindre eller lika med $b

Vidare så är else och elsif frivilligt att använda i Perl:
if (uttryck1)
{
sats1;	#Anropas om uttryck1 är sant
}
elsif (uttryck2)
{
sats2;	#Omropas om uttryck1 är falskt och uttryck2 är sant
}
else
{
sats3;	#Omropas om både uttryck1 och uttryck2 är falska
}
elsif är alltså motsvarigheten till else if i JavaScript.
Unless (uttryck) är motsvarigheten till if (!uttryck) i JavaScript:
PERL				JAVASCRIPT
unless (uttryck)			if (!uttryck)
{				{
sats;				sats;
}				}

...eller...			...eller...

if (uttryck)			if (uttryck)
{				{
}				}
else				else
{				{
sats;				sats;
}				}

De logiska operatorerna är och (&&) och eller (||), dvs, precis som i JavaScript.

Att lära sig hur if-satser fungerar är ytterst viktigt vid all programmering, varför jag gjort ytterligare ett exempel nedan för att visa hur man kan använda sig av if- och unless-satser:

#!/usr/bin/perl
print "Content-type:text/html\n\n";

$kalleAnkaGillar="kakor";
$kajsaAnkaGillar="kakor";
$mussePiggGillar="glass";
$mimmiPiggGillar="godis";

if ($kalleAnkaGillar eq $kajsaAnkaGillar)		#Om kalle gillar samma sak som kajsa...
{
print "Kalle och Kajsa gillar samma saker.\n";	#Så skrivs detta ut...
}
else						#Annars...
{
print "Kalle och Kajsa gillar INTE samma saker.\n";	#Skrivs detta ut
}

if ($mussePiggGillar ne $mimmiPiggGillar)		#Om Musse INTE gillar samma sak som Mimmi...
{
print "Musse och Mimmi gillar INTE samma saker.";	#Så skrivs detta ut...
}
else						#Annars...
{
print "Musse och Mimmi gillar samma saker.";		#Skrivs detta ut
}


Utmatning:
Kalle och Kajsa gillar samma saker.
Musse och Mimmi gillar INTE samma saker.

[Perl guiden] - [Till kapitel 11]






Copyright © Omid Rouhani 1997-2022; Alla rättigheter reserverade.
Guider: [ HTML guide ] - [ JavaScript guide ] - [ DHTML guide ] - [ Perl guide ] - [ Sitemap ]