ein Kapitel zurück                                           ein Kapitel weiter

Bevor sie jetzt lernen wie sie einen Datei öffnen können um aus Ihr zu lesen bzw. zu schreiben, muss ich Ihnen noch ein paar Standardvariablen erklären.

Bevor ich zu den Standardvariablen kommen hier schnell ein kleines Programm das wir in den nächsten Beispielen weiterverwenden werden.........

#!/usr/bin/perl -w

while(<>){
 print $_;
}


Den Eingabeoperator <> kennen sie ja bereits. Meist haben wir in dieser Form verwendet...

$eingabe = <STDIN>;

Nun ist der Filehandle STDIN die default-Einstellung von dem Eingabe-Operator. Also können wir in weglassen. Außerdem wissen wir ja bereits das falls keine Variable angegeben wird wie bei...


while(<>)   


...das automatisch in die Standardvariable $_ geschrieben wird. Daher können wir uns auch diese Schreibweise ersparen.......

while ($_ = <>) 


Wenn sie das Programm bereits getestet haben wissen sie das dieses nichts anderes macht als zeilenweise den Text von der Standardausgabe einließt und diesen Text gleich wieder mit print ausgibt.

Wenn sie nun wollen können sie eine beliebige Textdatei mit diesem Programm auslesen in dem sie die Textdatei als 2. Argument hinter dem Programmnamen aufrufen.........

/usr/bin/perl -w programm.pl textdatei.txt

Unschön ist das ganze jetzt natürlich das der ganze Text auf einmal ausgegeben wird. Wenn wir den Text jetzt zeilenweise ausgeben wollen müssen wir das Programm ein wenig umschreiben........

#!/usr/bin/perl -w

while(<>){
 print $_;
 <STDIN>;
}


Mit <STDIN>, wir hätten auch <> schreiben können, wird die Textdatei jetzt Zeilenweise ausgegeben. Und sie müssen nach jeder Zeile ENTER drücken.

Nun ist es in Perl möglich mit Hilfe einer Standardvariablen ein eigenes Zeilentrennzeichen zu definieren. Beispiel......

#!/usr/bin/perl -w

$/ = "#";
while(<>){
 print $_;
}


Mit Hilfe der Angabe............

$/ = "#"; 

Können sie solange einen Text in der Standardeingabe eingeben bis sie das Zeichen '#' gelesen wird. Erst dann wird der Text auf dem Bildschirm ausgegeben. Dies macht allerdings nur Sinn wenn sie Zeilen aus Dateien einlesen. Über der Standardeingabe machen sie die Ausgabe nur Umständlicher.

Kommen wir zu einer weiteren Standardvariablen. Was in Perl etwas lästig ist bei der print-Ausgabe jedesmal für den Zeilenumbruch zu sorgen mit '\n'
Die nimmt uns Perl mit der Standardvariabel $\ ab. Mit dieser Standardvariablen legen wir den Abschluss einer Ausgabe fest.......

#!/usr/bin/perl -w

$\="\n";
print "Eine Demonstration zum Abschluss einer Ausgabe";
print "Diese Zeile ist nächste Zeile";


Durch die Angabe von $\="\n" werden alle Nachfolgenden Ausgaben mit einem Zeilenumbruch beendet.

Weitere Standardvariablen wären sogenannte Elementetrenner für Arrays. Dabei gibt es zwei Varianten. Zum einen die Standardvariable $, und $" Sie wissen ja wenn wir ein Array folgendermaßen ausgeben........

#!/usr/bin/perl -w

$\="\n";

@array = ("Haus", "Auto", "Schiff", "Geld");
print @array;


...werden diese an einem Strang ohne Leerzeichen ausgegeben, es sei dem man stellt sie zwischen doppelte Hochkommata. Falls andere Zeichen als Hochkommata zur Ausgabe von Arrays erwünscht sind gibt es zum einen die Standardvariable $, womit wir das Trennzeichen für Arrays oder Hashes festlegen womit wir die einzelnen Wörter ohne den Anführungszeichen ausgeben........

#!/usr/bin/perl -w

$\ = "\n";
$, = " * ";

@array = ("Haus", "Auto", "Schiff", "Geld");
print @array;


Mit der Standardvariable $" machen wir das selbe nur das wir die Ausgabe von dem Array in doppelte Hochkommas stellen.......

#!/usr/bin/perl -w

$\ = "\n";
$" = " * ";

@array = ( "Haus", "Auto", "Schiff", "Geld");
print "@array";


Mit der Standardvariablen $. können sie die einzelnen Zeilennummern mitausgeben.......

#!/usr/bin/perl -w

while(<>){
 print $. , ".Zeile : " , $_;
 }


Zu guter Letzt wäre da noch die Standardvariable $| zur Deaktivierung des Puffers.
Die Pufferung der Ausgabe bewirkt das die Ausgabe aus STDOUT erst erfolgt wenn ein Newline-Zeichen gelesen wird. Um dies zu deaktivieren genügt es der Standardvariable $| den Wert 1 zu übergeben.

Wollen wir die Standardvariablen nochmals zusammenfassen........

  • $/       Eigenes Zeilentrennzeichen
  • $\       Abschluss einer Ausgabe
  • $, $"   Elemententrenner für Arrays
  • $.       Zeilennummerierung
  • $|       Pufferung

    ein Kapitel zurück          nach oben           ein Kapitel weiter


    © 2001,2002 Jürgen Wolf