/blog/perl


substr() in Perl
[125792 mal gelesen]
foreach in Perl
[115250 mal gelesen]
Arrays in Perl - Besonderheiten
[108002 mal gelesen]
open() - Dateien öffnen in Perl
[97048 mal gelesen]
split() in Perl - Zeichenketten teilen
[87147 mal gelesen]
chomp() in Perl
[83717 mal gelesen]
grep - Listen durchsuchen in Perl
[81031 mal gelesen]
push in Perl
[77563 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[60385 mal gelesen]
print in Perl
[49304 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 7927 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

Wiederholungen finden mit regulären Ausdrücken

stat - Eigenschaften von Dateien ermitteln

foreach in Perl

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

eof - Prüft, ob Dateiende erreicht ist

crypt() in Perl - Zeichenketten verschlüsseln

Uhrzeit und Datum bestimmen in Perl

pop() in Perl

Subsystem für Unix-basierte Anwendungen in Windows Vista



0.020637035369873 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
24.5.2018

Es ist
13:04:07 Uhr

Ihre IP:
54.81.68.240

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3653466


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
123456
78910111213
14151617181920
21222324252627
28293031

Impressum