J'ai suivi le conseil et utilise File::Find qui vraiment pratique et depuis
mon script de cet après midi les choses ont évolués, actuellement mon
script edite tous les fichiers de l'arbo mais n'exclut toujours pas les
fichiers ayant l'extension définie dans un fichier extension.def.
La ligne "elsif ($tabext{$ficext} != undef) {}" semble ne pas s'executer,
je n'arrive pas à lui dire de vérifier si l'extension du fichier trouver
lors du find est présente dans la liste et dans ce cas rien faire car je
souhaite avoir les fichiers ayant d'autres extensions que ceux définit.
Merci pour d'avance...
Sophie
Script Actuel:
--------------
#!/usr/bin/perl -w
use strict;
use warnings;
use diagnostics;
use File::Find;
sub listePages {
my $ext1="c:\\result.txt";
my $direct="c:\\";
open (Desc, "< extension.def");
my %tabext;
while (<Desc>){
$tabext{$_}='1';
}
find(\&accounts, $direct);
sub accounts {
$File::Find::name =~ /(\..*)$/;
my $ficext = $1;
#Pour eliminer les dossiers
if (-d $File::Find::name) {}
#Pour eliminer les fichiers ayant une extension étant dans la liste
elsif ($tabext{$ficext} != undef) {}
else {
open SORTIE,">> $ext1";
print "$File::Find::name \n";
print SORTIE "$File::Find::name \n";
close SORTIE;
}
close Desc;
}
}
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
Julien PLEE
Bonjour,
Vérifiez peut-être que $_ ne termine pas par n, dans quel cas ce (duo de) caractère(s) est de trop... et celà fausse l'évaluation future de $tabext{$ficext}. Pour en être certain, il suffit d'utiliser la commande chomp() qui supprime l'éventuel saut de ligne.
open (DESC, "< extension.def"); my %tabext; while (<DESC>){ chomp; # Supprime le n final si il existe dans la variable $_ $tabext{$_}='1'; } close DESC; # <-- Vous n'avez pas besoin du handle par la suite, fermez-le dès que possible :-)
Cordialement
Julien
Bonjour,
Vérifiez peut-être que $_ ne termine pas par n, dans quel cas ce (duo de)
caractère(s) est de trop... et celà fausse l'évaluation future de
$tabext{$ficext}.
Pour en être certain, il suffit d'utiliser la commande chomp() qui supprime
l'éventuel saut de ligne.
open (DESC, "< extension.def");
my %tabext;
while (<DESC>){
chomp; # Supprime le n final si il existe dans la variable
$_
$tabext{$_}='1';
}
close DESC; # <-- Vous n'avez pas besoin du handle par la suite,
fermez-le dès que possible :-)
Vérifiez peut-être que $_ ne termine pas par n, dans quel cas ce (duo de) caractère(s) est de trop... et celà fausse l'évaluation future de $tabext{$ficext}. Pour en être certain, il suffit d'utiliser la commande chomp() qui supprime l'éventuel saut de ligne.
open (DESC, "< extension.def"); my %tabext; while (<DESC>){ chomp; # Supprime le n final si il existe dans la variable $_ $tabext{$_}='1'; } close DESC; # <-- Vous n'avez pas besoin du handle par la suite, fermez-le dès que possible :-)
Cordialement
Julien
Rue des Prairies
Orion93 wrote:
Re-bonjour,
J'ai suivi le conseil et utilise File::Find qui vraiment pratique et depuis mon script de cet après midi les choses ont évolués, actuellement mon script edite tous les fichiers de l'arbo mais n'exclut toujours pas les fichiers ayant l'extension définie dans un fichier extension.def.
La ligne "elsif ($tabext{$ficext} != undef) {}" semble ne pas s'executer, je n'arrive pas à lui dire de vérifier si l'extension du fichier trouver lors du find est présente dans la liste et dans ce cas rien faire car je souhaite avoir les fichiers ayant d'autres extensions que ceux définit.
Merci pour d'avance...
Sophie
Bonjour,
Le test est plutôt :
elsif(exists($tabext{$ficext}) { }
Olivier.
Orion93 wrote:
Re-bonjour,
J'ai suivi le conseil et utilise File::Find qui vraiment pratique et depuis
mon script de cet après midi les choses ont évolués, actuellement mon
script edite tous les fichiers de l'arbo mais n'exclut toujours pas les
fichiers ayant l'extension définie dans un fichier extension.def.
La ligne "elsif ($tabext{$ficext} != undef) {}" semble ne pas s'executer,
je n'arrive pas à lui dire de vérifier si l'extension du fichier trouver
lors du find est présente dans la liste et dans ce cas rien faire car je
souhaite avoir les fichiers ayant d'autres extensions que ceux définit.
J'ai suivi le conseil et utilise File::Find qui vraiment pratique et depuis mon script de cet après midi les choses ont évolués, actuellement mon script edite tous les fichiers de l'arbo mais n'exclut toujours pas les fichiers ayant l'extension définie dans un fichier extension.def.
La ligne "elsif ($tabext{$ficext} != undef) {}" semble ne pas s'executer, je n'arrive pas à lui dire de vérifier si l'extension du fichier trouver lors du find est présente dans la liste et dans ce cas rien faire car je souhaite avoir les fichiers ayant d'autres extensions que ceux définit.