/blog/perl


substr() in Perl
[154170 mal gelesen]
foreach in Perl
[129166 mal gelesen]
Arrays in Perl - Besonderheiten
[125384 mal gelesen]
split() in Perl - Zeichenketten teilen
[113580 mal gelesen]
open() - Dateien öffnen in Perl
[108992 mal gelesen]
grep - Listen durchsuchen in Perl
[94729 mal gelesen]
chomp() in Perl
[93643 mal gelesen]
push in Perl
[90859 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[75984 mal gelesen]
index() in Perl - Zeichenkette in Zeichenkette suchen
[59577 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


Mittwoch, 11.4.2007, 00:02:03 Uhr

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:

$size=-s 'dateiname.txt';
print $size;


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.

open (FILE,"bild.gif");
binmode(FILE) if -B FILE;


Wenn die Datei des File-Handles FILE eine Binärdatei ist, wird binmode aufgerufen.


-b
Unix-spezifisch
Dieser Operator ermittelt, ob eine Gerätedatei blockorientiert ist.

exit(-1) unless -b "/cdrom";


Wenn "/cdrom" kein blockorientiertes Gerät ist, wird das Script beendet.


-C
Dieser Operator ermittelt die Inode-Veränderungszeit einer Datei seit Programmstart.
Rückgabewert ist die Zeit in Tagen als Gleitpunktzahl.

if(-C $Datei > 10) {
print "Warnung!"; }


Wenn die Inode-Zeit der Datei $Datei größer als 10 Tage ist, wird "Warnung!" ausgegeben.


-c
Unix-spezifisch
Dieser Operator ermittelt, ob eine Gerätedatei zeichenorientiert ist.

exit(-1) if -c "/cdrom";


Wenn "/cdrom" zeichenorientiert ist, wird das Script beendet.


-d
Dieser Operator ermittelt, ob es sich um ein Verzeichnis handelt.

chdir("test") if -d "test";


Wenn "test" ein Verzeichnis ist, wird in das Verzeichnis gewechselt.


-e
Dieser Operator ermittelt, ob ein Verzeichniseintrag bzw. eine Datei existiert.

print "text.txt existiert!" if -e "text.txt";


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).

print "test.pl ist sticky" if -k "test.pl";


Wenn die Datei "text.pl" das Sticky-Bit gesetzt hat, wird dies ausgegeben.


-l
Unix-spezifisch
Dieser Operator ermittelt, ob es sich um einen symbolischen Link handelt.

print readlink("text.txt") if -l "text.txt";


Wenn die Datei "text.txt" ein symbolischer Link ist, wird dessen Wert ausgegeben.


-M
Dieser Operator ermittelt, wie lange eine Datei seit Programmstart nicht geändert wurde. Rückgabewert ist die Zeit in Tagen als Gleitpunktzahl.

printf("seit %.3f Tagen nicht modifiziert",-M $Datei);


Für die Datei $Datei wird ausgegeben, wie lange sie nicht mehr verändert wurde.


-o/-O
Unix-spezifisch
Dieser Operator ermittelt, ob die Datei der effektiven UID (-o) bzw. der realen UID (-O) gehört.

&tuwas if -o "text.txt";


Wenn die Datei "text.txt" der effektiven UID gehört, wird eine Subroutine aufgerufen.


-r/-R
Unix-spezifisch
Dieser Operator ermittelt, ob die effektive UID/GID (-r) bzw. die reale UID/GID (-R) Leserecht für die Datei besitzt.

open(FILE,"<text.txt") if -r "text.txt";


Wenn die effektive UID/GID Leserecht auf die Datei "text.txt" hat, wird sie zum Lesen geöffnet.


-p
Unix-spezifisch
Dieser Operator ermittelt, ob es sich um eine named pipe (FIFO) handelt.

print "pipe" if -p "myprog";


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).

next if -S $_;


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.

print -s $Eintrag if not -d $Eintrag;


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).

print "STDIN ist tty" if -t "STDIN";


Wenn der Standardeingabekanal tty ist, wird dies ausgegeben.

-u
Unix-spezifisch
Dieser Operator ermittelt, ob bei einer Datei das setuid-Bit (Set-User-Id-Bit) gesetzt ist.

die "kein uid-Bit" if not -u "text.pl";


Wenn bei der Datei "text.pl" kein setuid-Bit gesetzt ist, wird das Script mit einer Fehlermeldung beendet.


-w/-W
Unix-spezifisch
Dieser Operator ermittelt, ob die effektive UID/GID (-w) bzw. die reale UID/GID (-W) Schreibrecht für die Datei besitzt.

open(FILE,">text.txt") if -W "text.txt";


Wenn die reale UID/GID für die Datei "text.txt" Schreibrechte besitzt, wird sie zum Schreiben geöffnet.


-x/-X
Unix-spezifisch
Dieser Operator ermittelt, ob die effektive UID/GID (-x) bzw. die reale UID/GID (-X) Ausführrecht für die Datei besitzt.

system("myprog") if -x "myprog";


Wenn die effektive UID/GID für die Datei "myprog" Rechte zum Ausführen der Datei besitzt, wird sie über einen system-Aufruf ausgeführt.


-z
Dieser Operator ermittelt, ob eine Datei leer ist, also 0 Bytes hat.

open(FILE,"<text.txt") if not -z "text.txt";


Wenn die Datei "text.txt" nicht leer ist, wird sie zum Lesen geöffnet.


Thema: Perl System Dateien

Der Beitrag "Dateitestoperatoren - Eigenschaften von Verzeichnissen und Dateien feststellen" wurde 11652 mal gelesen.

Es wurde 9 x über diesen Beitrag abgestimmt.
Die durchschnittliche Beurteilung liegt bei
2.1 (1 = sehr gut - 6 = grottenschlecht).

Kommentar schreiben  Druckansicht  Seitenanfang 
Beurteilen 






 Zufällige Beiträge im /blog/perl

each() in Perl - Wertepaare aus Hash auslesen

Kuriose Reguläre Ausdrücke

Epoche live in Datum umwandeln

Die Perl-Blog-Software

foreach in Perl

Cookies mit Perl

Alternativen in regulären Ausdrücken - Oder-Suche mit RegEx

Schande über mich - Ich habe PHP benutzt

Mein HTPC - Weitere Erfahrungen



0.0319819450378418 sec. to build



...Blogsoftware in pure Perl - Powered by a lot of Coffee...


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl

Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
23.11.2024

Es ist
15:41:28 Uhr

Ihre IP:
3.145.63.148

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
4423987


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Impressum