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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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;
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 ?
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;
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
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
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