OVH Cloud OVH Cloud

besin d'aide

2 réponses
Avatar
sebastien
Bonjour,

J'ai ce petit script en perl qui me permet de scanner mes pages web pour y
rechercher des chaînes de caractère. Il fonctionne plutôt bien mais par
contre il ne scanne pas les répertoires en récursif. Ce qui fait que si le
répertoire "data" possède des sous répertoires, ceux-ci ne seront pas
analysés. Quelqu'un sait il ce que je dois modifier pour corriger ça ?

Par avance merci.

------------- début du script perl -------------

# -- include des modules necessaires
use strict;
use warnings;
#-------------------------------------------#
# CORPS DU PROGRAMME #
#-------------------------------------------#
# -- traitement principal
open (RESULT, "> result.txt");
opendir(REPERTOIRE, "data");
while (defined($_ = readdir(REPERTOIRE)))
{
# -- ne traiter que les fichier ayant l'extension .htm
if ( $_ =~ /\.htm$/ )
{
my $fichier = $_;
print "Traitement du fichier $fichier\n";
print RESULT "\n$fichier\n";
# -- composer le nom du fichier source
my $fichier_src = "data/$fichier";
if (open (PARAM, "< parametre.txt"))
{
while (<PARAM>)
{
s/\n//g;
s/\r//g;
my $motif=$_;
if (open (SOURCE, "< $fichier_src"))
{
while (<SOURCE>)
{
/${motif}/ && print RESULT "$_";
}
close(SOURCE);
}
}
close (PARAM);
}
print RESULT "\n";
}
}
closedir REPERTOIRE;
# -- fin programme principal

------------- fin du script perl -------------

Sébastien

la pensée du moment :
"Il était une fois un homme fidèle, c'est une belle histoire. Il était une
fois une femme fidèle, c'est un conte de fées." Maurice Jeanneret

http://sdrouard.dyndns.org

2 réponses

Avatar
root
On Thu, 25 Dec 2003 13:31:38 +0100, sebastien wrote:

Bonjour,

J'ai ce petit script en perl qui me permet de scanner mes pages web pour y
rechercher des chaînes de caractère. Il fonctionne plutôt bien mais par
contre il ne scanne pas les répertoires en récursif. Ce qui fait que si le
répertoire "data" possède des sous répertoires, ceux-ci ne seront pas
analysés. Quelqu'un sait il ce que je dois modifier pour corriger ça ?



use File::Find;

Avatar
dominix
sebastien wrote:
Bonjour,

J'ai ce petit script en perl qui me permet de scanner mes pages web
pour y rechercher des chaînes de caractère. Il fonctionne plutôt bien
mais par contre il ne scanne pas les répertoires en récursif. Ce qui
fait que si le répertoire "data" possède des sous répertoires,
ceux-ci ne seront pas analysés. Quelqu'un sait il ce que je dois
modifier pour corriger ça ?

Par avance merci.


il suffit de rendre le traitement recursif


------------- début du script perl -------------

# -- include des modules necessaires
use strict;
use warnings;
#-------------------------------------------#
# CORPS DU PROGRAMME #
#-------------------------------------------#
# -- traitement principal
open (RESULT, "> result.txt");


#il faut *toujours* tester le resutat de open();
open (RESULT, "> result.txt") or die "peux pas faire ca :$! !";

#ici on commence une fonction _recursive_

sub voyez_vous_ca {
my ($c_est_ou) = @_;
opendir( REPERTOIRE, $c_est_ou ) or die "oulla $!";
$c_est_ou =~ s|$|/|;
my @toto = map {$c_est_ou . $_ } readdir(REPERTOIRE);
closedir REPERTOIRE;
# dans une recursion
# il ne faut pas garder ouvert un DIRHANDLE

foreach my $c_est_quoi (@toto) {
next if $c_est_quoi =~ /.$/;
# on veux pas . et .. , non vraiment on veux pas
voyez_vous_ca( $c_est_quoi ) if ( -d $c_est_quoi );
# -- ne traiter que les fichier ayant l'extension .htm
if ( $c_est_quoi =~ /.htm$/ && -f $c_est_quoi )
#un repertoire peux etre ..^^ "repertoire.html"
{
#traitement *recursif* avec $fichier=$c_est_quoi
}
}
voyez_vous_ca ("data");
close RESULT; # pas bien d'oublier de fermer, pas bien

------------- fin du script perl -------------

Sébastien



--
dominix