|    
 
In Perl gibt es einige Dateioperatoren mit denen sie Informationen
verschiedenster Art zu einer Datei bekommen. Ich werde dabei nicht
auf alle Eingehen.Zuerst folgende Dateitestoperatoren....... 
 
 
-e  existiert die Datei? -z  ist die Datei 0 Bytes gross (Zero)-s  Länge in Bytes  
 
 #!/usr/bin/perl -w
$file="file.txt";
#Falls file.txt nicht existiert (-e) wird sie erzeugt....
system("touch file.txt") if not -e $file;
#Überprüfung ob file.txt existiert.....
print "Datei file.txt exisitiert\n" if -e $file;
#Wenn Datei 0Bytes gross ist öffnen....
open(FH,">file.txt") if -z $file;
#Mit 100 Bytes füllen
print FH "x" x99 , "\n";
close FH;
print "Datei hat nicht die Länge Null\n" if not -z $file;
#Wir überprüfen die Grösse in Bytes von file.txt
print "Datei ist grösser als 100 Bytes\n" if -s $file > 100;
print "Datei ist 100 Bytes gross\n" if -s $file == 100;
#So gehts auch......
print -s $file , " Bytes\n";
#Wieder weg damit.....
unlink($file);
 
 
Das Programm erzählt die Anwendungen der Dateitestoperatoren glaube ich von
selbst.
 
 #!/usr/bin/perl -w
opendir(DH, ".") or die "opendir $!\n";
while(defined($name=readdir(DH))){
   print $name , "\n" if -s $name > 1024*10;
   }
closedir DH;
 
 
Mit diesem Beispiel geben wir zum Beispiel alle Dateien aus die Grösser
als 10KB sind. Idealer läßt sich der -s Operator mit grep verwenden.....
 
 #!/usr/bin/perl -w
@files = <*.txt>;
@number = grep { -s > 1024*10 }@files;
print "Textdateien grösser als 10KB : \n";
foreach(@number){
   print $_ , "\n";
   }
 
 
Hier werden alle Textdateien ausgegen die grösser als 10KB sind.
 Um zu testen um was für eine "Dateiart" es sich handelt gibt es
folgende Dateitestoperatoren....
 
 
 
-d   Directory 
-f   normale Datei-p   Pipe -l   Symlink -S   Socket-b   Gerätedatei Blockweise-c   Gerätedatei Zeichenweise -t   Terminal (TTY)  
Eingesetzt werden diese Dateien genauso wie schon oben gesehen.
Auch hierzu ein Beispiel......
 
 #!/usr/bin/perl -w
@files = <*>;
@directory = grep { -d }@files;
@file = grep { -f }@files;
print "Alle VERZEICHNISSE : \n";
print "@directory\n\n";
print "Alle regulären DATEIEN : \n";
print "@file\n\n";
 
 
Hier kommen alle Dateiverzeichnisse in @directory und alle
regulären Dateien in @file. 
 stat : 
Wenn sie noch mehr Informationen über eine Datei oder offenes Filehandle
benötigen können sie auch die Funktion stat verwenden. stat liefert bei
Erfolg eine Liste mit 13 Elementen zurück mit folgendem Inhalt, in
der selben Reihenfolge.....
 
 
 
dev      Gerätenummer des Dateisystems
ino      Inode-Nummer
mode     Zugriffsrecht und Dateityp
nlink    Zähler Harter Links
uid      User-ID
gid      Group-ID
rdev     Raw-Gerätenummer des Dateisytems
size     Logische Größe in Bytes
atime    Letzte Zugriffszeit
mtime    Letzte Veränderung
ctime    Letzte Inode-Veränderung
blksize  Ideale Blockgröße für Datei-I/O
blocks   Anzahl zugewisener Blöcke 
Und auch hierzu das Anwendungsbeispiel zu stat......
 
 #!/usr/bin/perl -w
$file="out.txt";
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
 $atime,$mtime,$ctime,$blksize,$blocks) = stat($file);
$at=scalar localtime($atime);
$mt=scalar localtime($mtime);
$ct=scalar localtime($ctime);
print "Datei : $file\n";
print "Device : ($dev, $rdev) Inode : $ino\n";
print "Mode : $mode\n";
print "Links : $nlink\n";
print "Eigentümer : ($uid, $gid)\n";
print "Grösse(logisch) : $size Bytes\n";
print "Grösse(physisch) : $blocks\n";
print "Blockgrösse : $blksize\n";
print "Letzter Zugriff : $at\n";
print "Letzte Änderung : $mt\n";
print "Inode-Änderung : $ct\n"; 
 
 
       
 © 2001,2002 Jürgen Wolf
 |