Come distinguere un file da una directory in Perl

Supponiamo che tu stia creando uno script Perl per attraversare un file system e registrare ciò che trova. Quando apri gli handle di file, devi sapere se hai a che fare con un file reale o con una directory, che tratti diversamente. Volete glob una directory, così potete continuare ad analizzare ricorsivamente il filesystem. Il modo più rapido per distinguere i file dalle directory è utilizzare gli Operatori di prova file integrati di Perl. Perl ha operatori che puoi usare per testare diversi aspetti di un file. L'operatore -f viene utilizzato per identificare i file regolari anziché le directory o altri tipi di file.

Utilizzo dell'operatore -f File Test

 #! / usr / bin / perl -w
$ nomefile = '/path/to/your/file.doc';
$ directoryname = '/ path / to / your / directory';
if (-f $ nomefile)
stampa "Questo è un file.";

if (-d $ directoryname)
print "Questa è una directory.";

Innanzitutto, crei due stringhe: una che punta a un file e una che punta a una directory. Quindi, prova il $ filename con il -f operatore, che controlla se qualcosa è un file. Verrà stampato "Questo è un file". Se si prova l'operatore -f nella directory, non viene stampato. Quindi, fare il contrario per il $ DirectoryName e confermare che si tratta, in effetti, di una directory. Combina questo con una directory glob per ordinare quali elementi sono file e quali directory:

#! / usr / bin / perl -w
@files =;
foreach $ file (@files)
if (-f $ file)
stampa "Questo è un file:". $ File;

if (-d $ file)
stampa "Questa è una directory:". $ File;


Un elenco completo degli operatori di test dei file Perl è disponibile online.