OVH Cloud OVH Cloud

Toujours prob de check fichier Pl dans une arbo

6 réponses
Avatar
Orion93
Mon script a pour but de compter le nombre de ligne dans tous les fichiers
pl present dans un ensemble de dossiers ayant pour point commun c:\stat\

Voici un script ou il compte bien le nbre de ligne dans les fichiers PL
mais seulement dans un dossier et je ne trouve pas comment le faire pour
toute mon arbo.

sub listeFile
{
my $nomDir = "C:\\stat";
my $log = shift;
my $i = 0;
my @liste;
my $val = "";
my $temp="";

opendir(DIR,$nomDir);
@liste = grep(/[^\.]/,readdir(DIR)); # On récupère le nom du fichier ou du
répertoire seul (sans le chemin complet)
closedir(DIR);
while($i < scalar @liste)
{
$nomComplet = $nomDir."\\".$liste[$i];
if (-d $nomComplet) #S'il s'agit d'un répertoire
{
if ($liste[$i]!~ /^_/)
{
listeFile($nomComplet,$log);
}
}
else
{
if($liste[$i]=~ /(pl$)/i ) #Si le fichier à l'extension désirée
{
$compteur++;
#print LOG "$nomComplet\n";
print LOG "$nomComplet\n";
}

}
$i++;
}
}
my $compteur = 0;
my $emplacement1 = "C:\\tmp";
my $ficResultat1 = "C:\\stat\\result1.txt";

sub recup_fichiers
{
my $nomFic = shift;
my $result = shift;

# Récupération des lignes du fichier
open(F,$nomFic);
open(SORTIE,">> $result");
$j = 0;
while(<F>)
{
$j ++;
}
print SORTIE "$nomFic;$j\n";
close F;
close SORTIE;
}

my $emplacement = "";
my $ficResultat = "C:\\stat\\result.txt";
recup_fichiers($_, $ficResultat) for glob '*.pl' ;

Merci d'avance pour votre aide

6 réponses

Avatar
Alain BARBET
sub listeFile
{
my $nomDir = "C:stat";
my $log = shift;


....

listeFile($nomComplet,$log);


tout ca tout ca quoi ... allez vazy chuis sur que tu peux trouver ...

Avatar
greg
tu dois utiliser le principe de recursivité pour parcourir l'ensemble d'un
arbre.

"Orion93" a écrit dans le message de
news:
Mon script a pour but de compter le nombre de ligne dans tous les fichiers
pl present dans un ensemble de dossiers ayant pour point commun c:stat

Voici un script ou il compte bien le nbre de ligne dans les fichiers PL
mais seulement dans un dossier et je ne trouve pas comment le faire pour
toute mon arbo.

sub listeFile
{
my $nomDir = "C:stat";
my $log = shift;
my $i = 0;
my @liste;
my $val = "";
my $temp="";

opendir(DIR,$nomDir);
@liste = grep(/[^.]/,readdir(DIR)); # On récupère le nom du fichier ou du
répertoire seul (sans le chemin complet)
closedir(DIR);
while($i < scalar @liste)
{
$nomComplet = $nomDir."".$liste[$i];
if (-d $nomComplet) #S'il s'agit d'un répertoire
{
if ($liste[$i]!~ /^_/)
{
listeFile($nomComplet,$log);
}
}
else
{
if($liste[$i]=~ /(pl$)/i ) #Si le fichier à l'extension désirée
{
$compteur++;
#print LOG "$nomCompletn";
print LOG "$nomCompletn";
}

}
$i++;
}
}
my $compteur = 0;
my $emplacement1 = "C:tmp";
my $ficResultat1 = "C:statresult1.txt";

sub recup_fichiers
{
my $nomFic = shift;
my $result = shift;

# Récupération des lignes du fichier
open(F,$nomFic);
open(SORTIE,">> $result");
$j = 0;
while(<F>)
{
$j ++;
}
print SORTIE "$nomFic;$jn";
close F;
close SORTIE;
}

my $emplacement = "";
my $ficResultat = "C:statresult.txt";
recup_fichiers($_, $ficResultat) for glob '*.pl' ;

Merci d'avance pour votre aide


Avatar
greg
GNU IS NOT UNIX
GNU IS NOT UNIX
GNU IS NOT UNIX
GNU IS NOT UNIX
GNU IS NOT UNIX..........
Avatar
Orion93
Alain BARBET wrote in
news:bvmgm2$h4v$:

sub listeFile
{
my $nomDir = "C:stat";
my $log = shift;


....

listeFile($nomComplet,$log);


tout ca tout ca quoi ... allez vazy chuis sur que tu peux trouver ...



Malheureusement j'y arrive toujours pas! Je ne vois pas comment lié les
deux parties.


Avatar
Freddo
Alain BARBET wrote:
tout ca tout ca quoi ... allez vazy chuis sur que tu peux trouver ...


qlqchose comme:
perl -MFile::Find -e'find(sub{$x++if-f&&/.pl$/;},("/tmp"));print$x' > /stat/result.txt
?

Avatar
Alain BARBET
sub listeFile
{
my $nomDir = "C:stat";
my $log = shift;


....

listeFile($nomComplet,$log);


tout ca tout ca quoi ... allez vazy chuis sur que tu peux trouver ...


Malheureusement j'y arrive toujours pas! Je ne vois pas comment lié les
deux parties.


A quoi ca sert de passer 2 parametres quand seul le premier sera
utilisé, mmmmh?