/blog/perl


substr() in Perl
[131321 mal gelesen]
foreach in Perl
[118757 mal gelesen]
Arrays in Perl - Besonderheiten
[112413 mal gelesen]
open() - Dateien öffnen in Perl
[99804 mal gelesen]
split() in Perl - Zeichenketten teilen
[93556 mal gelesen]
chomp() in Perl
[86502 mal gelesen]
grep - Listen durchsuchen in Perl
[83768 mal gelesen]
push in Perl
[81254 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[63927 mal gelesen]
print in Perl
[51062 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 8408 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

Human Date - Menschliche Datumsangaben erkennen

Reguläre Ausdrücke - Einfache Suche mit gemischten Zeichen

Wohnzimmer-PC, die hoffentlich letzte Maßnahme

Feiertage eines beliebigen Jahres errechnen mit Perl

Die Schwartzsche Transformation - Arrays sortieren nach mehreren Kriterien

Arrayeinträge zählen und sortiert nach Häufigkeit ausgeben

Mac-Adresse herausfinden unter Windows Vista, Windows 7 und XP

chr() in Perl - Zeichen anhand seines ASCII-Codes ermitteln und ausgeben

lcfirst () - Erstes Zeichen einer Zeichenkette in Kleinbuchstaben umwandeln



0.036128044128418 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
truncate - Dateigröße verändern in Perl
Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Von: Fabian
Kommentar:
Hallo zusammen,
ich suche schon etwas im Internet und bin bisher nicht fündig geworden.
Zum Beitrag


Von: Schorschel eastcoast
Kommentar:
Danke. Das hat mir weitergeholfen.
Zum Beitrag


Von: Jessica
Kommentar:
Kann man auch zwei Datein parallel einlesen?

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag



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
19.4.2019

Es ist
6:49:09 Uhr

Ihre IP:
184.73.14.222

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3802116


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



Mo Di Mi Do Fr Sa So
1234567
891011121314
15161718192021
22232425262728
2930

Impressum