Skalare VariablenPerl

Eine Variable ist der Name für einen Behälter, der einen oder mehrere Werte enthält. Dieser Name bleibt im ganzen Programm gleich; jedoch der Inhalt - also der Wert dieser Variable - ändert sich normalerweise, während das Programm läuft.

Die elementarsten Variablen in Perl sind die skalaren Variablen. Skalare Variablen beinhalten Zahlen oder Strings. Vor dem eigentlichen Namen muss immer ein $-Zeichen stehen. Als nächstes Zeichen erwartet Perl einen Buchstaben (a-z,A-z); anschließend können weitere Buchstaben, Zahlen oder Unterstriche folgen: $my_Variable1.

Bemerkung: Es ist sinnvoll den Namen einer Variablen so zu wählen, dass dieser über die Funktion oder den Inhalt der Variablen etwas aussagt. Zum Beispiel: $stringLength statt $v1001.

SeitenanfangSeitenendeZahlen

$i=-10; # der Inhalt von $i ist -10; man sagt
        # auch: der Wert von $i ist -10
$AntwortAufAlleFragen=42;

$pi=3.1415;
$epsilon=-0.01;
$klein=1.3e-6;
$b12x3_3=-1.3e6;

$epsilon=$klein;
  # kopiere Inhalt von $klein nach $epsilon

... und das sollte schon aufgefallen sein:

SeitenanfangSeitenendeStrings

$text="Perl ist super";
$output="moin moin\n";

$zahl="99";

$priority = 'hoch';

$bla=$output;
  # kopiere Inhalt von $output nach $bla

SeitenanfangSeitenendeOperatoren

Die Operatoren für die skalaren Daten gelten auch für die skalaren Variablen, da diese nur die Behälter von skalaren Variablen sind und den Wert repräsentieren (Tabelle mit den Operatoren auf skalare Daten.) Hinzu kommen noch Zuweisungsoperatoren (wie z. B. =), Operatoren für automatisches Hoch- bzw. Herunterzählen und der schon bekannte chop-Operator.

Zuweisungsoperatoren, Operatoren für automatisches Hoch- bzw. Herunterzählen, der chop-Operator:

Operator Beispiel Inhalt der Variablen Bemerkung
= $i=12; $i: 12
+= $j=10; $j+=12; $j: 22 Zuweisungsoperator: Addition zum Inhalt
-= $k=3; $k-=12; $k:-9 Subtraktion
*= $l=5; $l*=100; $l: 500 Multiplikation
/= $m=5; $m/=4; $m: 1.25 Division
.= $w="ABC"; $w.="DEF"; $w: "ABCDEF" String anhängen an den Inhalt
++ $i=0; $i++; ++$i; $i: 2 Zähle um 1 hoch
-- $i=1; $i--; --$i; $i: -1; Zähle um 1 herunter
chop() $x="hi world"; chop($x); $x: "hi worl" Entfernen des letzten Zeichens im String
chomp() $x="hi world\n"; chomp($x); chomp($x); $x: "hi world" Entfernen des letzten Zeichens im String, falls es das Trennzeichen für Eingabezeilen ist (ab Perl 5).
(Quelle: Einführung in Perl - von Randal L. Schwartz)
 
Bemerkung: chop() und chomp() liefern einen Rückgabewert und zwar das abgeschnitte Zeichen!

Beispiele (vgl. Rangfolge der Operatoren):

$i=12; $j=44;
$i++;   # $i: 13
$i+=$j; # $i: 57

$n=22; $m=33;
$n+=$m+=3; # $n: 58; $m: 36; Zuweisungsopera-
           # toren sind rechts-assoziativ

$l=4;
$k=++$l; # als Präfix; $k: 5; $l: 5;

$l=4;
$k=$l++; # als Suffix; $k: 4; $l: 5; es wird
         # nach der Zuweisung hochgezählt (in
         # der Tabelle mit der Rangfolge der
         # Operatoren ist der Präfix-Operator
         # angegeben)

$dad="fred"; $name="flinstone";
$dad.=" ".$name; # $dad: "fred flinstone"

Und noch ein interessantes Beispiel:

$i=20;
$j=10;

print $i."-".$j."=".$i-$j."\n";
print $i."*".$j."=".$i*$j."\n";
print $i."+".$j."=".$i+$j."\n";
print $i."==".$j."=".$i==$j."\n";
print "--\n";
print "a) ".$i."-".$j."=".$i-$j."\n";
print "b) ".$i."*".$j."=".$i*$j."\n";
print "c) ".$i."+".$j."=".$i+$j."\n";
print "d) ".$i."==".$j."=".$i==$j."\n";
print "--\n";
dieses liefert:
10
20*10=200
30
--
-10
b) 20*10=200
10
--
 

... und das sollte schon aufgefallen sein:

SeitenanfangSeitenendeskalare Variablen in Zeichenketten (Interpolation)

Eine Besonderheit von Perl ist die Behandlung von Strings! Das soll auch so bleiben: Variablen können in einem String mit aufgeführt werden, so dass der Wert der Variablen eingesetzt wird. (Man nennt das auch Interpolation.)

$fred2="Fred";
$greetings="Hi $fred2, how are you?";
  # ergibt: "Hi Fred, how are you?"
$greetings2='Hi $fred2, how are you?';
  # ergibt: "Hi $fred2, how are you?"
Bemerkung: Es gibt noch einige interessante Konstellationen für die Interpolation von Skalaren Variablen in Zeichenketten. Aber dazu mehr in der Übung 1.

SeitenanfangSeitenendetrue & false

Die Werte true und false (also wahr und falsch) werden unter Perl etwas anders behandelt als in anderen Programmiersprachen. Enthält eine Variable den Wert 0, so wird diese als false interpretiert. Enthält eine Variable den Wert 0.0 (diesen kann man nur über einen String in die Variable bekommen: $i="0.0"; $i=0.0; würde dazu führen, dass $i nur 0 enthält). Hier eine kleine Tabelle:

Ausdruck Wert
0 false
"" false
"0" false
"0.0" true
undef false
7 true
-1.9 true
"irgendein string" true

SeitenanfangSeitenendeundef

Eine Variable, die benutzt wird, ohne dass ihr ein Wert zugewiesen wurde, hat den Wert undef. Dieser Wert entspricht 0, falls die Variable als Zahl und "", falls die Variable als String behandelt wird.

$bla;    # $bla: undef
$bla+=5; # $bla wird als Zahl (also mit 0 besetzt)
         # behandelt; d. h., $bla hat am Ende den Wert 5

Seitenanfang FehlermeldungHilfe zur Fehlermeldung © 2001-2003 Email an den AutorPerl, Lehrstuhl Mathe II, Uni Bayreuth