Dateitestoperatoren - Eigenschaften von Verzeichnissen und Dateien feststellen
Die so genannten Dateitestoperatoren sind die schnellste und einfachste Methode in Perl, Eigenschaften von Dateien oder Verzeichnissen herauszufinden.
Manche Operatoren geben dabei nur true oder false zurück, andere wiederum Zahlen, etwa die Größe einer Datei.
Den Dateitestoperatoren wird ein - vorangestellt, danach folgt der Verzeichnis- bzw. Dateiname. Also zum Beispiel:
Anstatt des Dateinamens können die Dateitestoperatoren übrigens auch mit Dateihandles arbeiten, also wäre auch ein
open (my $IN,"datei.txt");
$size=-s $IN; close $IN; print $size;
möglich.
Alle Operatoren, alphabetisch sortiert
-A
Dieser Operator ermittelt, wie lange seit Programmstart auf eine Datei zugegriffen wurde.
Der Rückgabewert ist die Zeit in Tagen als Gleitkommazahl.
printf("%.3f Tage Zugriffszeit",-A $Datei);
Für die vom Script verarbeitete Datei $Datei wird ausgegeben, wie lange darauf zugegriffen wurde.
-B
Dieser Operator ermittelt, ob die Datei eine Binärdatei ist.
Wenn die Datei "text.txt" existiert, wird dies ausgegeben.
-f
Unix-spezifisch
Dieser Operator ermittelt, ob es sich um eine normale Datei (keine Gerätedatei, kein Verzeichnis usw.) handelt.
&tuwas if -f "text.txt";
Wenn die Datei "text.txt" eine normale Datei ist, wird eine Subroutine aufgerufen.
-g
Unix-spezifisch
Dieser Operator ermittelt, ob bei einer Datei das setgid-Bit (set-group-ID-Bit) gesetzt ist.
chmod 02771, "daten" unless -g "daten";
Wenn das Verzeichnis "daten" kein setgid-Bit besitzt, werden die entsprechenden Rechte gesetzt.
-k
Unix-spezifisch
Dieser Operator ermittelt, ob bei einer Datei das Sticky-Bit gesetzt ist (Bit z.B. für die Anweisung, Code eines Programms nach dessen Ausführung im Speicher zu behalten, weil es voraussichtlich öfter ausgeführt wird).
Wenn die Datei "myprog" eine named pipe ist, wird dies ausgegeben.
-S
Unix-spezifisch
Dieser Operator ermittelt, ob die Datei eine Socket-Datei ist (wird von Client-Server-Prozessen, die auf einem Rechner laufen, als Schnittstelle benutzt).
Wenn die aktuelle Datei innerhalb einer angenommenen Schleife zur Überprüfung von allen Verzeichniseinträgen ein Socket ist, startet der nächste Schleifendurchgang.
-s
Dieser Operator ermittelt die Dateigröße in Bytes.
Wenn der Verzeichniseintrag $Eintrag kein Verzeichnis ist, wird die Dateigröße ausgegeben.
-t
Unix-spezifisch
Dieser Operator ermittelt, ob der Verzeichniseintrag ein tty, d.h. ein angeschlossenes Gerät (Terminal) ist (unter Unix werden Peripheriegeräte als Dateien behandelt).