SELFHTML

Skalare (Variablen)

Informationsseite

nach unten Skalare deklarieren und Werte zuweisen
nach unten Typ-Umwandlung von Skalaren
nach unten Funktionen und Operationen zum Manipulieren von Skalaren

 nach unten 

Skalare deklarieren und Werte zuweisen

In Perl wird eine einfache Variable, die eine Zahl oder eine Zeichenkette speichern kann, als Skalar bezeichnet.

Beispiel eines vollständigen CGI-Scripts:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Name = "Methusalem";
my $Alter = 625;
my $Name_2 = "Junger Hansel";
my $JungAlter = sqrt($Alter);

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body>\n";

print "$Name ist ein alter Mann, sehr alt. Er ist $Alter Jahre alt<br>\n";
print "$Name_2 ist dagegen ein Jungspund. Er ist $JungAlter.<br>\n";

print "</body></html>\n";

Erläuterung:

Im Beispiel werden vier Skalare deklariert (erstmals im Script genannt und eingeführt): $Name, $Alter, $Name_2 und $JungAlter. Alle vier Anweisungen werden hier mit my definiert. Die Deklaration ist erforderlich, weil weiter oben im Script die Anweisung use strict; notiert ist. Würde sie fehlen, dann wäre es erlaubt, die Variablen auch ohne Deklaration zu benutzen. Besonders bei größeren Scripts ist es jedoch besser, sich gleich einen sauberen Stil anzugewöhnen und alle Variablen zu deklarieren. Dieses Vorgehen kann die Fehlersuche im Script oftmals bedeutend erleichtern.

Ein Skalar beginnt stets mit einem Dollarzeichen $. Das Dollarzeichen muss immer angegeben werden, wenn die Variable verwendet wird. Hinter dem Dollarzeichen folgt ein frei wählbarer Name, der jedoch den Seite Namensvergabe genügen muss.

Skalare speichern Werte. Die Werte bekommen sie zugewiesen. Die Deklarationen der vier Skalare im Beispielscript sind typische Zuweisungen. Die Zuweisung geschieht durch das Gleichheitszeichen =. Links davon steht der Name des Skalars, rechts davon der Wert, der zugewiesen wird. Das kann ein direkt notierter Wert sein, also etwa "Methusalem" oder 625. Es kann aber auch ein Ausdruck sein, der den Wert erst errechnet. Bei der Deklaration von $JungAlter wird im Beispiel eine Perl-Funktion aufgerufen, die zu einer Zahl die Quadratwurzel berechnet und den errechneten Wert zurückgibt (Seite sqrt). Dieser Rückgabewert wird dem Skalar $JungAlter zugewiesen.

Bei der Deklaration eines Skalars können Sie - wie in den obigen Beispielen - einen Initialisierungswert (Anfangswert) zuweisen. Es ist aber auch möglich, einen Skalar ohne Wertzuweisung zu deklarieren. Dann lassen Sie die Wertzuweisung einfach weg und notieren eine Anweisung, die einfach aus dem Namen des Skalars und dem die Anweisung abschließenden Semikolon besteht (z.B. my $Name;). Wenn ein Skalar auf diese Weise deklariert ist, hat er den Wert "undefiniert" (undef). Wenn Sie die Seite w-Option benutzen, gibt der Perl-Interpreter Ihnen eine Warnung aus, wenn Sie mit einen solchen undefinierten Wert weiterarbeiten wollen.

Sie können Skalaren numerische Werte, Zeichenketten (Strings) und Seite Referenzen zuweisen. Ob ein Skalar numerisch oder eine Zeichenkette ist, entscheiden Sie, indem Sie dem Skalar einen Wert zuweisen oder indem Sie ihn in einer Anweisung verwenden. Eine Zeichenkette muss dabei in Anführungszeichen stehen. Das können sowohl doppelte Anführungszeichen als auch einfache Anführungszeichen sein (zum Unterschied siehe Seite Regeln beim Notieren von Zeichenketten). Im obigen Beispiel speichern die Skalare $Name und $Name_2 Zeichenketten, während die Skalare $Alter und $JungAlter Zahlen speichern.

Das obige Beispiel-Script sendet als CGI-Script den Seite HTTP-Header und HTML-Code an den Browser. Dabei verwendet es die Skalare in den print-Anweisungen an den nötigen Stellen. Im HTML-Code, der beim Browser ankommt, erscheint dann an der entsprechenden Stelle der aktuelle Wert des Skalars.

 nach obennach unten 

Typ-Umwandlung von Skalaren

Skalare können sowohl Zahlen als auch Zeichenketten speichern. Auch ein und derselbe Skalar kann im Laufe eines Scripts mal eine Zahl, mal eine Zeichenkette speichern. Die so genannte Typumwandlung, die in klassischen Programmiersprachen entweder gar nicht möglich ist oder mit einer eigenen Anweisung durchgeführt werden muss, erfolgt bei Perl automatisch.

Beispiel eines vollständigen CGI-Scripts:

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

my $Wert = 123456;
my $Teilwert = substr($Wert,1,3);
$Wert = $Teilwert;

print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body>\n";

print "<var>Teilwert</var> lautet: <b>$Teilwert</b><br>\n";
print "Und <var>Wert</var> lautet: <b>$Wert</b><br>\n";

print "</body></html>\n";

Erläuterung:

Im Beispiel wird ein Skalar $Wert deklariert und bekommt dabei eine Zahl zugewiesen. Anschließend wird ein weiterer Skalar $Teilwert deklariert. Diesem Skalar wird der Rückgabewert einer Perl-Funktion zugewiesen, nämlich der Funktion Seite substr. Dies ist eine typische Zeichenkettenfunktion. Sie extrahiert aus einer Zeichenkette einen Teil davon. Nun werden Zahlen im Computer aber anders gespeichert als Zeichenketten. In den meisten anderen Programmiersprachen wäre es deshalb ein schwerer Fehler zu versuchen, einer solchen Zeichenkettenfunktion eine Zahl zu übergeben. In Perl ist das jedoch kein Problem. Im Beispiel wird der Funktion einfach $Wert übergeben, also der Skalar, in dem zu diesem Zeitpunkt eine Zahl gespeichert ist. Perl bewertet die Zahl bei dem Wunsch, eine Zeichenkettenfunktion darauf anzuwenden, automatisch als Zeichenkette, sprich, als Abfolge von Ziffern, Dezimalzeichen usw.

Im Beispiel extrahiert die Funktion substr die Zeichen 2 bis 4 der Zeichenkette (übergeben werden Startposition und Länge, aber in Perl wird bei solchen Dingen immer bei 0 zu zählen begonnen, nicht bei 1, daher werden 1 und 3 übergeben). Wenn man die Zahl 123456 als Zeichenkette interpretiert, wird also einfach 234 extrahiert. Diesen Wert gibt die Funktion substr im obigen Aufruf auch zurück - aber als Zeichenkette. Denn substr gibt immer und in jedem Fall eine Zeichenkette zurück. In der darauffolgenden Beispielanweisung $Wert = $Teilwert wird nochmals die Fähigkeit von Perl zur automatischen Typumwandlung auf die Probe gestellt. Denn mit dieser Anweisung bekommt $Wert, worin ja bis dahin eine Zahl gespeichert ist, plötzlich eine Zeichenkette zugewiesen, nämlich den Wert von $Teilwert, der ja aus dem Rückgabewert von substr ermittelt wurde und eine Zeichenkette ist. Wenn Sie andere Programmiersprachen kennen, werden Sie hieran ermessen können, welche Freiheiten Sie in Perl beim Umgang mit Variablen haben.

Das obige Beispiel sendet HTML-Code an den aufrufenden Browser und gibt die aktuellen Werte der Skalare aus.

Beachten Sie:

Der Perl-Interpreter versucht sein Bestes, die Werte Ihrer Variablen zu verarbeiten. Das heißt, wenn Sie beispielsweise mit einer Zeichenkette numerische Operationen durchführen (z.B. 3 + "Text"), wird diese Zeichenkette in einen numerischen Wert konvertiert, und zwar in 0. Genauso können Sie auch eine Zeichenkette und eine Referenz miteinander verketten. Die Anweisung print "Text".$ref; (wobei $ref eine Referenz enthält) könnte also beispielsweise die Ausgabe TextSCALAR(0x1765158) erzeugen.

 nach obennach unten 

Funktionen und Operationen zum Manipulieren von Skalaren

Skalare sind Variablen. Man benutzt sie, um einen Speicherort für Werte zu haben, die sich im Verlauf des Scripts ändern können. Skalare ändern ihren gespeicherten Wert, indem ihnen ein neuer Wert zugewiesen wird. Solche zugewiesenen Werte sind jedoch oft keine direkten Werte, sondern Rückgabewerte von Funktionen, die irgendetwas berechnen oder leisten. In den Beispielen weiter oben kamen bereits zwei solcher Funktionen zum Einsatz: die Funktion sqrt zum Errechnen einer Quadratwurzel, und die Funktion substr zum Ermitteln einer Teilzeichenkette. Perl bietet viele solcher Funktionen an. Typische Funktionen, mit denen Sie den Wert von Skalaren beeinflussen können, sind beispielsweise die Seite Funktionen für Zeichenketten oder die Seite Funktionen für Berechnungen. Darüber hinaus werden Skalare oft auch im Zusammenhang mit Seite Schleifen benötigt und verändert. Zeichenketten können Sie beispielsweise auch miteinander verknüpfen, und mit Zahlen können Sie rechnen. Dazu benötigen Sie Seite Operatoren.

 nach oben
weiter Seite Listen bzw. Arrays (Variablen)
zurück Seite CGI-notwendige Anweisungen in Perl
 

© 2001 E-Mail selfhtml@teamone.de