/blog/perl


substr() in Perl
[104424 mal gelesen]
foreach in Perl
[96736 mal gelesen]
Arrays in Perl - Besonderheiten
[86032 mal gelesen]
open() - Dateien öffnen in Perl
[83300 mal gelesen]
chomp() in Perl
[71148 mal gelesen]
grep - Listen durchsuchen in Perl
[66289 mal gelesen]
push in Perl
[61323 mal gelesen]
split() in Perl - Zeichenketten teilen
[59218 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[44425 mal gelesen]
print in Perl
[40474 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 5711 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

lcfirst () - Erstes Zeichen einer Zeichenkette in Kleinbuchstaben umwandeln

Gefälschte Mail von Google enthält Trojaner

Eine Datei zeilenweise einlesen mit Perl

crypt() in Perl - Zeichenketten verschlüsseln

tell - Die Position eines Dateizeigers ermitteln

pop() in Perl

Die Perl-Blog-Software

Pop3-Postfach einlesen und Mails anzeigen bzw. verarbeiten



0.0268349647521973 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: perluser
Kommentar:
Bei
foreach (@a){$_=~ s/\n//;}
Zum Beitrag


Von: Susi
Kommentar:
vielen Dank, hat mir sehr geholfen :-)
Zum Beitrag


Von: TBu
Kommentar:
Hi,
super Beispiel, DANKE!
Zum Beitrag


Von: Thomas Ha
Kommentar:
Danke für den schönen Blog, er dient mir öfters mal als Nachschlagewerk!

Zum Beitrag


Von: Kasi
Kommentar:
auch im november 2011 noch super hilfreich,danke dir gruß
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
4.2.2012

Es ist
16:11:26 Uhr

Ihre IP:
38.107.179.240

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
2961757


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
12345
6789101112
13141516171819
20212223242526
272829

Impressum