Comment distinguer un fichier d'un répertoire en Perl

Supposons que vous construisez un script Perl pour parcourir un système de fichiers et enregistrer ce qu'il trouve. Lorsque vous ouvrez des descripteurs de fichiers, vous devez savoir si vous avez affaire à un fichier réel ou à un répertoire que vous traitez différemment. Vous souhaitez glob un répertoire, afin que vous puissiez continuer à analyser récursivement le système de fichiers. Le moyen le plus rapide de distinguer les fichiers des répertoires est d'utiliser les opérateurs de test de fichiers intégrés de Perl. Perl a des opérateurs que vous pouvez utiliser pour tester différents aspects d'un fichier. L'opérateur -f est utilisé pour identifier des fichiers normaux plutôt que des répertoires ou d'autres types de fichiers.

Utilisation de l'opérateur de test de fichier -f

 #! / usr / bin / perl -w
$ filename = '/path/to/your/file.doc';
$ directoryname = '/ chemin / vers / votre / répertoire';
if (-f $ filename)
imprimer "Ceci est un fichier.";

if (-d $ nom_répertoire)
print "Ceci est un répertoire.";

Tout d'abord, vous créez deux chaînes: l'une pointant sur un fichier et l'autre pointant sur un répertoire. Ensuite, testez le $ filename avec le -F , qui vérifie si quelque chose est un fichier. Cela affichera "Ceci est un fichier." Si vous essayez l'opérateur -f dans le répertoire, il ne s'imprime pas. Ensuite, faites le contraire pour le $ nom_répertoire et confirmez qu'il s'agit bien d'un répertoire. Combinez cela avec un répertoire global pour trier les éléments qui sont des fichiers et ceux qui sont des répertoires:

#! / usr / bin / perl -w
@files =;
foreach $ file (@files)
if (-f $ fichier)
imprimer "Ceci est un fichier:". $ file;

if (-d $ fichier)
imprimer "Ceci est un répertoire:". $ file;


Une liste complète des opérateurs de test de fichiers Perl est disponible en ligne.