open (Desc, "< extension.def");
while (<Desc>){
chomp;
$tabext{$_}='1';
}
close Desc;
mon probleme est que j'ai besoin d'utiliser le même type de fonction plus loin
dans mon prog dans un autre sub de cet facon:
open (Desc2, "< sources.def");
while (<Desc2>){
chomp;
$tabext2{$_}='1';
}
close Desc2;
Mon problème est qu'au lieu de réinitialiser la valeur de mon tableau, il
incremente au valeur precédemment charger (extension.def) les valeurs de sources.
def donc je me retrouve a traiter les valeurs extension.def et sources.def au
lieu de sources.def seulement.
D'où ma question: Est il possible de réinitialiser les valeurs de $_ pour régler
ce problème?
Merci
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr
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
Scetbon Cyril
Orion93 wrote:
Bonjour,
J'utilise une entrée standard de type:
open (Desc, "< extension.def"); while (<Desc>){ chomp; $tabext{$_}='1'; } close Desc;
mon probleme est que j'ai besoin d'utiliser le même type de fonction plus loin dans mon prog dans un autre sub de cet facon:
open (Desc2, "< sources.def"); while (<Desc2>){ chomp; $tabext2{$_}='1'; } close Desc2;
Mon problème est qu'au lieu de réinitialiser la valeur de mon tableau, il incremente au valeur precédemment charger (extension.def) les valeurs de sources. def donc je me retrouve a traiter les valeurs extension.def et sources.def au lieu de sources.def seulement. difficile à comprendre puisque tu utilises 2 hash différents. De toute
façon $_ prend la valeur de <Desc2> dans le deuxième passage, il n'y a donc rien à réinitialiser.
tu peux t'expliquer un peu plus (ex de hash ?)
D'où ma question: Est il possible de réinitialiser les valeurs de $_ pour régler ce problème?
Merci
Orion93 wrote:
Bonjour,
J'utilise une entrée standard de type:
open (Desc, "< extension.def");
while (<Desc>){
chomp;
$tabext{$_}='1';
}
close Desc;
mon probleme est que j'ai besoin d'utiliser le même type de fonction plus loin
dans mon prog dans un autre sub de cet facon:
open (Desc2, "< sources.def");
while (<Desc2>){
chomp;
$tabext2{$_}='1';
}
close Desc2;
Mon problème est qu'au lieu de réinitialiser la valeur de mon tableau, il
incremente au valeur precédemment charger (extension.def) les valeurs de sources.
def donc je me retrouve a traiter les valeurs extension.def et sources.def au
lieu de sources.def seulement.
difficile à comprendre puisque tu utilises 2 hash différents. De toute
façon $_ prend la valeur de <Desc2> dans le deuxième passage, il n'y a
donc rien à réinitialiser.
tu peux t'expliquer un peu plus (ex de hash ?)
D'où ma question: Est il possible de réinitialiser les valeurs de $_ pour régler
ce problème?
open (Desc, "< extension.def"); while (<Desc>){ chomp; $tabext{$_}='1'; } close Desc;
mon probleme est que j'ai besoin d'utiliser le même type de fonction plus loin dans mon prog dans un autre sub de cet facon:
open (Desc2, "< sources.def"); while (<Desc2>){ chomp; $tabext2{$_}='1'; } close Desc2;
Mon problème est qu'au lieu de réinitialiser la valeur de mon tableau, il incremente au valeur precédemment charger (extension.def) les valeurs de sources. def donc je me retrouve a traiter les valeurs extension.def et sources.def au lieu de sources.def seulement. difficile à comprendre puisque tu utilises 2 hash différents. De toute
façon $_ prend la valeur de <Desc2> dans le deuxième passage, il n'y a donc rien à réinitialiser.
tu peux t'expliquer un peu plus (ex de hash ?)
D'où ma question: Est il possible de réinitialiser les valeurs de $_ pour régler ce problème?
Merci
Orion93
Pour moi aussi étant donné qu'il s'agit d'un autre hash il devrait prendre uniquement les valeurs contenu dans le dernier fichier appelé... Mais c'est pas le cas et je ne comprend pas pourquoi!
Merci pour toute info...
Sophie
#!/usr/bin/perl -w use strict; use Tk; use Tk::Entry; use File::Find;
my $main = MainWindow -> new; $main -> title("Test 1"); $main -> Label(-text=>"Chemin:")->pack(); my $toto = $main -> Entry()->pack(-padx=>5); $main -> Label(-text=>"Chemin avec fichier en txtn pour le résultat:")->pack(); #my $toto1 = $main -> Entry()->pack(-padx=>5); $main->Button(-text=>'Ok',-command=>&listePages)->pack(-side=>'left', expand=>1, -pady=>5); $main->Button(-text=>'Fermer',-command=>sub {exit;})->pack(-side=>'right', expand=>1,-pady=>1); MainLoop(); my $i=0; my %tabext; my %tabext2; my $tmp; my $total=0;
sub listePages { my $direct=$toto->get(); open (Desc, "< extension.def"); while (<Desc>){ chomp; $tabext{$_}='1'; } close Desc; #Appel au module File::Find find(&accounts, $direct); sub accounts { #my $ext1=$toto1->get(); open SORTIE,">> c:testappli.txt"; $File::Find::name =~ y/A-Z/a-z/; $File::Find::name =~ /(.w*)$/; my $ficext = $1; my $taille;
Konn*************************************************************************** *****************nn"; print SORTIE "Soit un taille total de "; printf SORTIE "%.2f",$total; print SORTIE " Ko pour l'arborescence"; close SORTIE; &listeautres; }
sub listeautres { my $direct=$toto->get(); open (Desc1, "< sources.def"); while (<Desc1>){ chomp; $tabext{$_}='1'; } close Desc1;
#Appel au module File::Find find(&accounts2, $direct);
sub accounts2 { #my $ext1=$toto1->get(); open SORTIE,">> c:testautres.txt"; $File::Find::name =~ y/A-Z/a-z/; $File::Find::name =~ /(.w*)$/; my $ficext1 = $1; my $taille; #Pour effacer les repertoires if (-d $File::Find::name) { print SORTIE "nSoit $i Fichiers représentant "; printf SORTIE "%.2f",$tmp; print SORTIE " Kon"; print SORTIE
"n****************************************************************************** **************nNom du répertoire : $File::Find::name n****************************************************nn"; $i=0; $tmp=0; }
#Pour effacer les fichiers ayant une extension défini dans .def elsif (exists($tabext{$ficext1})){ }
Konn*************************************************************************** *****************nn"; print SORTIE "Soit un taille total de "; printf SORTIE "%.2f",$total; print SORTIE " Ko pour l'arborescence"; close SORTIE; &listesource; }
sub listesource { my $direct=$toto->get(); open (Desc2, "< sources.def"); while (<Desc2>){ chomp; $tabext2{$_}='1'; } close Desc2;
#Appel au module File::Find find(&accounts3, $direct);
sub accounts3 { #my $ext1=$toto1->get(); open SORTIE,">> c:testsources.txt"; $File::Find::name =~ y/A-Z/a-z/; $File::Find::name =~ /(.w*)$/; my $ficext2 = $1; my $taille;
Konn*************************************************************************** *****************nn"; print SORTIE "Soit un taille total de "; printf SORTIE "%.2f",$total; print SORTIE " Ko pour l'arborescence"; close SORTIE; }
Les fichiers en .def sont des listes d'extensions. -- Ce message a été posté via la plateforme Web club-Internet.fr This message has been posted by the Web platform club-Internet.fr
http://forums.club-internet.fr/
Pour moi aussi étant donné qu'il s'agit d'un autre hash il devrait prendre
uniquement les valeurs contenu dans le dernier fichier appelé...
Mais c'est pas le cas et je ne comprend pas pourquoi!
Merci pour toute info...
Sophie
#!/usr/bin/perl -w
use strict;
use Tk;
use Tk::Entry;
use File::Find;
my $main = MainWindow -> new;
$main -> title("Test 1");
$main -> Label(-text=>"Chemin:")->pack();
my $toto = $main -> Entry()->pack(-padx=>5);
$main -> Label(-text=>"Chemin avec fichier en txtn pour le résultat:")->pack();
#my $toto1 = $main -> Entry()->pack(-padx=>5);
$main->Button(-text=>'Ok',-command=>&listePages)->pack(-side=>'left', expand=>1,
-pady=>5);
$main->Button(-text=>'Fermer',-command=>sub {exit;})->pack(-side=>'right',
expand=>1,-pady=>1);
MainLoop();
my $i=0;
my %tabext;
my %tabext2;
my $tmp;
my $total=0;
sub listePages {
my $direct=$toto->get();
open (Desc, "< extension.def");
while (<Desc>){
chomp;
$tabext{$_}='1';
}
close Desc;
#Appel au module File::Find
find(&accounts, $direct);
sub accounts {
#my $ext1=$toto1->get();
open SORTIE,">> c:\test\appli.txt";
$File::Find::name =~ y/A-Z/a-z/;
$File::Find::name =~ /(.w*)$/;
my $ficext = $1;
my $taille;
Konn***************************************************************************
*****************nn";
print SORTIE "Soit un taille total de ";
printf SORTIE "%.2f",$total;
print SORTIE " Ko pour l'arborescence";
close SORTIE;
&listeautres;
}
sub listeautres {
my $direct=$toto->get();
open (Desc1, "< sources.def");
while (<Desc1>){
chomp;
$tabext{$_}='1';
}
close Desc1;
#Appel au module File::Find
find(&accounts2, $direct);
sub accounts2 {
#my $ext1=$toto1->get();
open SORTIE,">> c:\test\autres.txt";
$File::Find::name =~ y/A-Z/a-z/;
$File::Find::name =~ /(.w*)$/;
my $ficext1 = $1;
my $taille;
#Pour effacer les repertoires
if (-d $File::Find::name) {
print SORTIE "nSoit $i Fichiers représentant ";
printf SORTIE "%.2f",$tmp;
print SORTIE " Kon";
print SORTIE
"n******************************************************************************
**************nNom du répertoire : $File::Find::name
n****************************************************nn";
$i=0;
$tmp=0;
}
#Pour effacer les fichiers ayant une extension défini dans .def
elsif (exists($tabext{$ficext1})){
}
Konn***************************************************************************
*****************nn";
print SORTIE "Soit un taille total de ";
printf SORTIE "%.2f",$total;
print SORTIE " Ko pour l'arborescence";
close SORTIE;
&listesource;
}
sub listesource {
my $direct=$toto->get();
open (Desc2, "< sources.def");
while (<Desc2>){
chomp;
$tabext2{$_}='1';
}
close Desc2;
#Appel au module File::Find
find(&accounts3, $direct);
sub accounts3 {
#my $ext1=$toto1->get();
open SORTIE,">> c:\test\sources.txt";
$File::Find::name =~ y/A-Z/a-z/;
$File::Find::name =~ /(.w*)$/;
my $ficext2 = $1;
my $taille;
Konn***************************************************************************
*****************nn";
print SORTIE "Soit un taille total de ";
printf SORTIE "%.2f",$total;
print SORTIE " Ko pour l'arborescence";
close SORTIE;
}
Les fichiers en .def sont des listes d'extensions.
--
Ce message a été posté via la plateforme Web club-Internet.fr
This message has been posted by the Web platform club-Internet.fr
Pour moi aussi étant donné qu'il s'agit d'un autre hash il devrait prendre uniquement les valeurs contenu dans le dernier fichier appelé... Mais c'est pas le cas et je ne comprend pas pourquoi!
Merci pour toute info...
Sophie
#!/usr/bin/perl -w use strict; use Tk; use Tk::Entry; use File::Find;
my $main = MainWindow -> new; $main -> title("Test 1"); $main -> Label(-text=>"Chemin:")->pack(); my $toto = $main -> Entry()->pack(-padx=>5); $main -> Label(-text=>"Chemin avec fichier en txtn pour le résultat:")->pack(); #my $toto1 = $main -> Entry()->pack(-padx=>5); $main->Button(-text=>'Ok',-command=>&listePages)->pack(-side=>'left', expand=>1, -pady=>5); $main->Button(-text=>'Fermer',-command=>sub {exit;})->pack(-side=>'right', expand=>1,-pady=>1); MainLoop(); my $i=0; my %tabext; my %tabext2; my $tmp; my $total=0;
sub listePages { my $direct=$toto->get(); open (Desc, "< extension.def"); while (<Desc>){ chomp; $tabext{$_}='1'; } close Desc; #Appel au module File::Find find(&accounts, $direct); sub accounts { #my $ext1=$toto1->get(); open SORTIE,">> c:testappli.txt"; $File::Find::name =~ y/A-Z/a-z/; $File::Find::name =~ /(.w*)$/; my $ficext = $1; my $taille;
Konn*************************************************************************** *****************nn"; print SORTIE "Soit un taille total de "; printf SORTIE "%.2f",$total; print SORTIE " Ko pour l'arborescence"; close SORTIE; &listeautres; }
sub listeautres { my $direct=$toto->get(); open (Desc1, "< sources.def"); while (<Desc1>){ chomp; $tabext{$_}='1'; } close Desc1;
#Appel au module File::Find find(&accounts2, $direct);
sub accounts2 { #my $ext1=$toto1->get(); open SORTIE,">> c:testautres.txt"; $File::Find::name =~ y/A-Z/a-z/; $File::Find::name =~ /(.w*)$/; my $ficext1 = $1; my $taille; #Pour effacer les repertoires if (-d $File::Find::name) { print SORTIE "nSoit $i Fichiers représentant "; printf SORTIE "%.2f",$tmp; print SORTIE " Kon"; print SORTIE
"n****************************************************************************** **************nNom du répertoire : $File::Find::name n****************************************************nn"; $i=0; $tmp=0; }
#Pour effacer les fichiers ayant une extension défini dans .def elsif (exists($tabext{$ficext1})){ }
Konn*************************************************************************** *****************nn"; print SORTIE "Soit un taille total de "; printf SORTIE "%.2f",$total; print SORTIE " Ko pour l'arborescence"; close SORTIE; &listesource; }
sub listesource { my $direct=$toto->get(); open (Desc2, "< sources.def"); while (<Desc2>){ chomp; $tabext2{$_}='1'; } close Desc2;
#Appel au module File::Find find(&accounts3, $direct);
sub accounts3 { #my $ext1=$toto1->get(); open SORTIE,">> c:testsources.txt"; $File::Find::name =~ y/A-Z/a-z/; $File::Find::name =~ /(.w*)$/; my $ficext2 = $1; my $taille;
Konn*************************************************************************** *****************nn"; print SORTIE "Soit un taille total de "; printf SORTIE "%.2f",$total; print SORTIE " Ko pour l'arborescence"; close SORTIE; }
Les fichiers en .def sont des listes d'extensions. -- Ce message a été posté via la plateforme Web club-Internet.fr This message has been posted by the Web platform club-Internet.fr
http://forums.club-internet.fr/
Paul GABORIT
À (at) 05 May 2004 13:21:26 GMT, Orion93 écrivait (wrote):
Pour moi aussi étant donné qu'il s'agit d'un autre hash il devrait prendre uniquement les valeurs contenu dans le dernier fichier appelé... Mais c'est pas le cas et je ne comprend pas pourquoi!
Merci pour toute info...
Vérifiez les différents endroits où vous utilisez vos deux tables de hachage et vous verrez que vous mélangez les deux noms. Corrigez votre erreur. Puis décidez à partir de maintenant de ne plus jamais utiliser deux noms qui ne se différencient que par un '2' en suffixe. Et finalement, décidez de rendre vos programmes modulaires en limitant la portée de vos variables (quand c'est possible).
Exemple :
à la place de :
my %tabext; my %tabext2;
dans un premier temps, utilisez :
my %extension_def; my %source_def;
puis au final :
{ my %extension_def; # ... utilisation de %extension_def }
{ my %source_def; # ... utilisation de %source_def }
Et si le code se ressemble, factorisez :
sub f { my $def_ref = shift; # ... travail sur $def_ref->{...} ... }
my %extension_def; my %source_def;
f(%extension_def); f(%source_def);
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>
À (at) 05 May 2004 13:21:26 GMT,
Orion93 <orion93@club-internet.fr> écrivait (wrote):
Pour moi aussi étant donné qu'il s'agit d'un autre hash il devrait prendre
uniquement les valeurs contenu dans le dernier fichier appelé...
Mais c'est pas le cas et je ne comprend pas pourquoi!
Merci pour toute info...
Vérifiez les différents endroits où vous utilisez vos deux tables de hachage
et vous verrez que vous mélangez les deux noms. Corrigez votre erreur. Puis
décidez à partir de maintenant de ne plus jamais utiliser deux noms qui ne se
différencient que par un '2' en suffixe. Et finalement, décidez de rendre vos
programmes modulaires en limitant la portée de vos variables (quand c'est
possible).
Exemple :
à la place de :
my %tabext;
my %tabext2;
dans un premier temps, utilisez :
my %extension_def;
my %source_def;
puis au final :
{
my %extension_def;
# ... utilisation de %extension_def
}
{
my %source_def;
# ... utilisation de %source_def
}
Et si le code se ressemble, factorisez :
sub f {
my $def_ref = shift;
# ... travail sur $def_ref->{...} ...
}
my %extension_def;
my %source_def;
f(%extension_def);
f(%source_def);
--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>
À (at) 05 May 2004 13:21:26 GMT, Orion93 écrivait (wrote):
Pour moi aussi étant donné qu'il s'agit d'un autre hash il devrait prendre uniquement les valeurs contenu dans le dernier fichier appelé... Mais c'est pas le cas et je ne comprend pas pourquoi!
Merci pour toute info...
Vérifiez les différents endroits où vous utilisez vos deux tables de hachage et vous verrez que vous mélangez les deux noms. Corrigez votre erreur. Puis décidez à partir de maintenant de ne plus jamais utiliser deux noms qui ne se différencient que par un '2' en suffixe. Et finalement, décidez de rendre vos programmes modulaires en limitant la portée de vos variables (quand c'est possible).
Exemple :
à la place de :
my %tabext; my %tabext2;
dans un premier temps, utilisez :
my %extension_def; my %source_def;
puis au final :
{ my %extension_def; # ... utilisation de %extension_def }
{ my %source_def; # ... utilisation de %source_def }
Et si le code se ressemble, factorisez :
sub f { my $def_ref = shift; # ... travail sur $def_ref->{...} ... }
my %extension_def; my %source_def;
f(%extension_def); f(%source_def);
-- Paul Gaborit - <http://www.enstimac.fr/~gaborit/> Perl en français - <http://www.enstimac.fr/Perl/>