  
Sie
haben nun die Grundfähigkeiten um ein Programm
zu schreiben - Sie wissen allerdings noch nicht
wie Sie Variablen vergleichen können.
Unterkapitelindex
7.1 Wozu vergleichen?
7.2 Allgemeines zu Vergleichen
7.3 Unless Anweisung
7.4 Beispiel
|
|
7.1
Wozu vergleichen?
In Programmen werden Verleiche ständig genutzt.
Ein einfaches Beispiel: Sie möchten ein Programm
schreiben das ein Passwort auf seine Richtigkeit
prüft. Oder Sie möchten wissen ob die
Anzahl der maximalen Einträge größer
oder kleiner der Anzahl der tatsächlichen
Einträge ist.
Sie sehen also das Sie hier ein wichtiges Kapitel
lesen.
|
|
7.2
Allgemeines zu
Vergleichen
Vergleiche sind sehr einfach durchführbar:
01
02
|
if (1 == 2){print
"Perl hat sich vertan";}
if (1 == 1){print "Perl hat doch Recht.";}
|
In diesem einfachen Beispiel sehen Sie wie Sie einen
einfachen Vergleich durchführen. Statt den
Zahlen (1 und 2) hätten Sie auch Variablen
oder gar Arrays einsetzen können:
01
02
03
04
05
06
|
my @array;
push @array,1;
push @array,3;
push @array,2;
if ($array[0] <= $array[1] &&
$array[1] < $array[2]){ print "Der
Array ist sortiert.";) else {print
"Der Array ist nicht sortiert."}
|
In diesem
Fall würde das Programm korrekt ausgeben das
der Array nicht sortiert ist. Hier wurde auch gleich
der AND Operator - das && genutzt. Dadurch
können Sie beliebig viele Vergleiche aneinanderreihen
die erfüllt sein müssen damit der Code
aufgerufen wird. Desweitern wurde der ELSE Befehl
genutzt. Was in der geschweiften Klammer hinter
dem ELSE Befehl steht wird nur dann ausgeführt,
wenn der Vergleich *nicht* gilt.
Neben dem AND Operator && gibt es auch noch
den OR Operator ||. Die Bedingung ist dann wahr,
wenn einer der beiden Vergleiche richtig ist.
Zum Vergleichen von Zahlen gibt es folgende
Operatoren:
==
!=
<
>
<=
>=
|
Beide Zahlen müssen
gleich sein
Beide Zahlen müssen ungleich sein
Zahl 1 muss kleiner Zahl 2 sein
Zahl 1 muss größer Zahl 2 sein
Zahl 1 muss kleiner oder gleich Zahl 2 sein
Zahl 1 muss größer oder gleich
Zahl 2 sein
|
Zum Vergleichen
von Strings gibt es folgende Operatoren:
eq
ne
|
Text 1 muss gleich
Text 2 sein
Text 1 muss ungleich Text 2 sein
|
Der Unterschied
zwischen == und eq liegt also darin
das mit == Zahlen und mit eq Zeichenketten
verglichen werden können.
|
|
7.3
Unless
Die Unless Anweisung ist eine Negativ If Anweisung
und dient nur zur Übersichtlichkeit. Beispielsweise
kann damit
01
|
if (1==1){ } else { print "Fehler";
}
|
als
01
|
unless (1==2){ print "Fehler";
}
|
geschrieben
werden.
|
|
7.4
Beispiel
Das folgende Beispiel ist eine einfache Passwortüberprüfung
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/usr/bin/perl -wT
use strict;
use CGI;
my $cgi = new CGI;
print $cgi->header;
print <<"EOF";
Content-Type:text/html
<html>
<head><title>Passwortabfrage</title></head>
<body>
EOF
my $pw = "test";
if ($pw ne 'passwort'){ print "Passwort
falsch!"; } else { print "Geheime
Daten."; }
print "</body>\n</html>";
|
Als Übung
wäre es möglich das obige Programm mit
Nutzereingaben statt einem festgelegten Passwort
zu nutzen (siehe Kapitel 6).
 
|