Hur man säger en fil från en katalog i Perl

Låt oss säga att du bygger ett Perl-skript för att korsa ett filsystem och registrera vad det hittar. När du öppnar filhandtag måste du veta om du har att göra med en faktisk fil eller med en katalog, som du behandlar annorlunda. Du vill globera en katalog, så att du kan fortsätta att rekursivt analysera filsystemet. Det snabbaste sättet att berätta filer från kataloger är att använda Perls inbyggda filtestoperatörer. Perl har operatörer du kan använda för att testa olika aspekter av en fil. Operatören -f används för att identifiera vanliga filer snarare än kataloger eller andra typer av filer.

Använda -f File Test Operator

 #! / usr / bin / perl -w
$ filename = '/path/to/your/file.doc';
$ directoryname = '/ path / to / your / directory';
if (-f $ filnamn)
tryck "Detta är en fil.";

if (-d $ directoryname)
print "Detta är en katalog.";

Först skapar du två strängar: en pekar på en fil och en pekar på en katalog. Testa sedan $ filnamn med -f operatör, som kontrollerar om något är en fil. Detta kommer att skriva ut "Detta är en fil." Om du försöker operatören -f i katalogen skrivs den inte ut. Gör sedan det motsatta för $ katalognamn och bekräfta att det faktiskt är en katalog. Kombinera detta med en katalog glob för att sortera vilka element som är filer och vilka kataloger:

#! / usr / bin / perl -w
@files =;
foreach $ -fil (@files)
if (-f $ fil)
skriva ut "Detta är en fil:". $ File;

if (-d $ fil)
skriva ut "Detta är en katalog:". $ File;


En komplett lista med Perl File Test Operators är tillgänglig online.