script perl pour récursivement la liste de tous les fichiers dans le répertoire
J'ai écrit à la suite d'un script perl mais le problème est qu'elle a toujours d'aller dans d'autre partie de reporting et non un fichier. J'ai des fichiers dans le répertoire que je donne dans l'entrée. Ce que je fais mal?
Mon exigence est récursive de visiter tous les fichiers dans un répertoire, de l'ouvrir et de le lire dans une chaîne de caractères. Mais la première partie de la logique est un échec.
#!/usr/bin/perl -w
use strict;
use warnings;
use File::Find;
my (@dir) = @ARGV;
find(\&process_file,@dir);
sub process_file {
#print $File::Find::name."\n";
my $filename = $File::Find::name;
if( -f $filename) {
print " This is a file :$filename \n";
} else {
print " This is not file :$filename \n";
}
}
Ce code semble fonctionner parfaitement bien pour moi (ActiveState Perl 5.10 sur XP). Comment faites-vous appel à votre script? Ce exactement voulez-vous dire par "Mais la première partie de la logique de l'échec."?
Quelle plateforme utilisez-vous? Qui version en perl?
"Mon exigence est récursive de visiter tous les fichiers dans un répertoire, de l'ouvrir et de le lire dans une chaîne de caractères. Mais la première partie de la logique de l'échec." En Première partie de la logique que je voulais dire , visite tous les fichiers d'un répertoire. Un fichier est un échec pour moi.
C'est la version de
désolé , c'est la version correcte : perl, v5.8.8 construit pour x86_64-linux-thread-multi
Quelle plateforme utilisez-vous? Qui version en perl?
"Mon exigence est récursive de visiter tous les fichiers dans un répertoire, de l'ouvrir et de le lire dans une chaîne de caractères. Mais la première partie de la logique de l'échec." En Première partie de la logique que je voulais dire , visite tous les fichiers d'un répertoire. Un fichier est un échec pour moi.
C'est la version de
which
, vous voulez juste perl --version
ou perl -V
, ou peut-être $(which perl) --version
ou $(which perl) -V
si perl
n'est pas dans votre PATH
.désolé , c'est la version correcte : perl, v5.8.8 construit pour x86_64-linux-thread-multi
OriginalL'auteur TopCoder | 2011-03-09
Vous devez vous connecter pour publier un commentaire.
$File::Find::name
donne le chemin relatif au répertoire de travail initial. Cependant, File::Find ne cesse de changer le répertoire de travail en cours, à moins que vous décidiez de les.Soit utiliser le
no_chdir
option, ou de l'utilisation-f $_
qui ne contient que le nom de fichier de la partie. Je recommande l'ancienne.OriginalL'auteur ikegami