<< Hashes | Inhalt | Funktionen >> |
Öffnen und Schließen | Lesen und Schreiben | Tests für Dateien |
Mit einem Filehandle kann Perl auf Files des Betriebssystems zugreifen. Der Name eines Filehandles beginnt mit keinem Sonderzeichen - mal was Neues. Es wird aber vorgeschlagen und empfohlen, dass der Name eines Filehandles nur aus Großbuchstaben besteht. (Ein Grund kann sein: In der Version Perl-XXX wird ein neuer Befehl - diese sind in Perl i. A. klein geschrieben - eingeführt, der eben genauso heißt wie der Filehandle; dies führt zu einem Fehler.)
Einen Filehandle öffnet man mit dem Operator open():
Es wird die Datei readme.txt zum Lesen geöffnet. Mit dem Filehandle DATEI kann man vom Perlprogramm aus auf die Datei zugreifen.
Will man die gleiche Datei zum Schreiben öffnen, so muss vor dem Dateinamen noch ein Größerzeichen > (das bewirkt ein Überschreiben) bzw. zwei Größerzeichen >> (um Anzuhängen) gestellt werden:
Der Operator open gibt true zurück, falls es gelungen ist die Datei zu öffnen.
Mit dem close()-Operator wird ein Filehandle geschlossen:
Noch ein Beispiel:
Also Öffnen und Schließen können wir jetzt. Lesen sollten wir aber auch können. Ähnlich wie beim <STDIN>-Operator und Lesen von der Standardeingabe kann das mit einem Filehandle auch bewerkstelligt werden:
Auf eine Datei schreibt man mit dem print-Operator. Man öffnet ein Filehandle zum Schreiben oder Anhängen und übergibt es dem print-Operator als erstes Argument. Das zweite enthält dann den Text, der geschrieben werden soll:
Ein weiteres Beispiel: Kopieren einer Datei mit Hilfe von Filehandles.
Perl bietet eine Möglichkeit an, um Tests an Dateien durchzuführen. Dazu sind Operatoren der Form -Buchstabe eingeführt worden. Hier seien einige davon erwähnt:
Operator | Bemerkung | Beispiel |
-e | existiert die Datei oder das Verzeichnis | if (-e "I_am.txt") { ... } |
-r | Datei oder Verzeichnis ist lesbar | if (-r 'c:\temp') { ... } |
-w | Datei oder Verzeichnis ist schreibbar | |
-x | Datei oder Verzeichnis ist ausführbar | |
-f | ist eine normale Datei | |
-d | ist ein Verzeichnis | |
-T | Die Datei enthält Text | |
-B | die Datei ist eine Binärdatei |
Will man mehrere Tests für die gleiche Datei machen (z. B. mit if (-r 'I_am.pl' && -w 'I_am.pl')), so holt Perl zweimal Informationen über diese Datei vom Betriebssystem. Das kostet Zeit! Mit dem Filehandle _ veranlasst man Perl, dass er die Infos des vorherigen Tests verwendet:
Öffnen und Schließen | Lesen und Schreiben | Tests für Dateien |
<< Hashes | Inhalt | Funktionen >> |
© 2001-2003 Perl, Lehrstuhl Mathe II, Uni Bayreuth |