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 ]