{Perl_CGI_Einführung}

MuWeb CGI Einführung Privat
 
00 Index
01 Vorwort
02 Kickstart
03 Hello World
04 Variablen
05 Arrays
06 Queries
07 Vergleiche
08 Schleifen
09 Dateien
10 Reg_Exp
11 Strings
12 Subs
13 Links

CGI 7 - Vergleiche

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).