1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#!/usr/bin/perl
use warnings;
use strict;
sub recursermdir($);
sub listdir($$);
my %content = ();
print "Entrez le nom du répertoire à parcourir : ";
while (<STDIN>) {
chomp;
if (!(-d) ) { #je me sens plus à l'aise ainsi, y'a t'il une véritable utilité à une utiliser unless ?
print "Il ne s'agit pas d'un répertoire.\n";
last;
}
else {
if (/.*[^\/]$/) {
#$_ .= "/"; # On rajoute un / à la fin
}
recursedir($_);
}
print "Entrez le nom du répertoire à parcourir : "; #pour la boucle
}
sub recursedir($) {
my $dir = $_;
my ($key,$value,$total,$totaldir);
listdir(\$dir, \%content);
while (($key,$value) = each(%content)) {
$total++;
if (-d $key) {
$totaldir++;
listdir(\$key,\%content); #il s'agit d'un rép alors on le liste
}
}
print "Il y a ".($total - $totaldir)." fichiers & ".($totaldir)." répertoires, pour un total de $total\n";
}
sub listdir($$) {
my ($dir, $cont) = @_;
if ($$dir =~ /.*[^\/]$/ and -d $$dir) {
$$dir .= "/"; # on ajoute un / au cas où..
}
while (<$$dir*>) {
if (-d) {
$$cont{$_} = 'dir';
}
else {
$$cont{$_} = 'file';
}
}
return %$cont;
} |
Partager