Computerwissenschaften

Unterscheiden zwischen einer Datei und einem Verzeichnis in Perl

Angenommen, Sie erstellen ein Perl-Skript, um ein Dateisystem zu durchlaufen und aufzuzeichnen, was es findet. Wenn Sie Dateihandles öffnen, müssen Sie wissen, ob es sich um eine tatsächliche Datei oder um ein Verzeichnis handelt, das Sie anders behandeln. Sie möchten ein Verzeichnis globalisieren, damit Sie das Dateisystem weiterhin rekursiv analysieren können. Der schnellste Weg , um Dateien aus Verzeichnissen zu sagen , ist Perl-interne zu verwenden Datei – Test – Operatoren. Perl verfügt über Operatoren, mit denen Sie verschiedene Aspekte einer Datei testen können. Der Operator -f wird verwendet, um reguläre Dateien anstelle von Verzeichnissen oder anderen Dateitypen zu identifizieren.

 

Verwenden des -f-Dateitestoperators

#! / usr / bin / perl -w 
$ filename='/path/to/your/file.doc'; 
$ directoryname='/ path / to / your / directory'; 
if (-f $ Dateiname) { 
print "Dies ist eine Datei."; 
} 
if (-d $ Verzeichnisname) { 
print "Dies ist ein Verzeichnis."; 
}}

Zunächst erstellen Sie zwei Zeichenfolgen. eine auf eine Datei und eine auf ein Verzeichnis. Testen Sie als Nächstes den Dateinamen $ mit dem Operator -f , der prüft, ob es sich bei einer Datei um eine Datei handelt. Dies wird „Dies ist eine Datei“ drucken. Wenn Sie den Operator -f für das Verzeichnis versuchen, wird er nicht gedruckt. Machen Sie dann das Gegenteil für den Verzeichnisnamen $ und bestätigen Sie, dass es sich tatsächlich um ein Verzeichnis handelt. Kombinieren Sie dies mit einem Verzeichnis-Glob  , um herauszufinden, welche Elemente Dateien und welche Verzeichnisse sind:

#! / usr / bin / perl -w 
@files=<*>; 
foreach $ file (@files) { 
if (-f $ file) { 
print "Dies ist eine Datei:". $ file; 
} 
if (-d $ file) { 
print "Dies ist ein Verzeichnis:". $ file; 
} 
}

Eine vollständige Liste der Perl File Test Operators  ist online verfügbar.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.