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
© 2001,2002 Jürgen Wolf
|