Perl et imbrication de foreach
picocpge
-
picocpge -
picocpge -
Bonjour a tous,
voila, j'ai un petit probleme, en fait je dois imbriquer des foreach et ca ne marche pas.
lorsque je fais le programme ci dessous ca fonctionne :
@t2=(1,2,3);
@t3=(1,2);
foreach my $f (@t2){
foreach my $g (@t3){
print "$f,$g\n";
}
}
mais dans mon cas les tableaux ne sont pas definis en "dur" et ca ne fonctionne pas :
foreach my $f (@t1){
foreach my $g (@t2){
foreach my $h (@t3){
foreach my $k (@t4){
foreach my $l (@t5){
print SCRIPT "$f,$g,$h,$k,$l\n";
}
}
}
}
}
mes cinq tableaux sont definis precedemment dans des boucles et lorsque j'entre dans le premier foreach ca fonctionne mais il ne rentre pas dans le second foreach car il ne connait plus @t2 donc je me demande pkoi ???
Merci d'avance pour votre aide
voila, j'ai un petit probleme, en fait je dois imbriquer des foreach et ca ne marche pas.
lorsque je fais le programme ci dessous ca fonctionne :
@t2=(1,2,3);
@t3=(1,2);
foreach my $f (@t2){
foreach my $g (@t3){
print "$f,$g\n";
}
}
mais dans mon cas les tableaux ne sont pas definis en "dur" et ca ne fonctionne pas :
foreach my $f (@t1){
foreach my $g (@t2){
foreach my $h (@t3){
foreach my $k (@t4){
foreach my $l (@t5){
print SCRIPT "$f,$g,$h,$k,$l\n";
}
}
}
}
}
mes cinq tableaux sont definis precedemment dans des boucles et lorsque j'entre dans le premier foreach ca fonctionne mais il ne rentre pas dans le second foreach car il ne connait plus @t2 donc je me demande pkoi ???
Merci d'avance pour votre aide
Configuration: Windows XP Internet Explorer 6.0
2 réponses
-
Salut,
essaie plutôtmy (@t1,@t2,@t3,@t4,@t5); my ($f,$g,$h,$k,$l); foreach $f (@t1){ foreach $g (@t2){ foreach $h (@t3){ foreach $k (@t4){ foreach $l (@t5){ print SCRIPT "$f,$g,$h,$k,$l\n"; } } } } }-
merci pour ta reponse mais en fait je suis oblige de definir mes tableaux avec des boucles car ils sont auto-generes par contre pour "my ($f,$g,$h,$k,$l);" pas de probleme.
mais je suis assez d'accord avec toi car je pense aussi que mes foreach ne fonctionne pas a cause de la maniere dont je definis mes tableaux.
Pourtant avant de rentrer dans mes foreach lorsque je mets print "@t1"; mon tableau s'affiche correctement et ca pareil pour tout mes tableaux... c bizarre pkoi ils ne fonctionnent plus une fois rentrer dans les foreach
-
-
my @t1;
my @t2;
my @t3;
my @t4;
my @t5;
my @t6;
my @t7;
my $a;
for my $j(1..7){
if($variable_name[$i] =~ "par$j"){
$variable_name[$i] = $variable_value[$i];
if ($variable_name[$i] !~ "NA"){
if ($j==1){
@t1 = split(',', $variable_name[$i]);
$a=1;
}
else{
if ($j==2){
@t2 = split(',', $variable_name[$i]);
$a = 2;
}
else{
if ($j==3){
@t3 = split(',', $variable_name[$i]);
$a=3; }
else{
if ($j==4){
@t4 = split(',', $variable_name[$i]);
$a=4;
}
else{
if ($j==5){
@t5 = split(',', $variable_name[$i]);
$a=5;
}
else{
if ($j==6){
@t6 = split(',', $variable_name[$i]);
$a=6;
}
else{
if ($j==7){
@t7 = split(',', $variable_name[$i]);
$a=7;
}
}
}
}
}
}
}
}}}
#if($a==7){
#foreach my $f (@t1){
# foreach my $g (@t2){
# foreach my $h (@t3){
# foreach my $k (@t4){
# foreach my $l (@t5){
# foreach my $m (@t6){
# foreach my $n (@t7){
# print SCRIPT "AT+CGQREQ=$f,$g,$h,$k,$l,$m,$n\n";
# }
# }
# }
# }
# }
# }
# }
# }
#else{
# if($a==6){
# foreach my $f (@t1){
# foreach my $g (@t2){
# foreach my $h (@t3){
# foreach my $k (@t4){
# foreach my $l (@t5){
# foreach my $m (@t6){
# print SCRIPT "AT+CGQREQ=$f,$g,$h,$k,$l,$m\n";
# }
# }
# }
# }
# }
# }
# }
# else{
# if($a==5){
my ($f,$g,$h,$k,$l);
foreach $f (@t1){
foreach $g (@t2){
foreach $h (@t3){
foreach $k (@t4){
foreach $l (@t5){
print "AT+CGQREQ=$f,$g,$h,$k,$l\n";
}
}
}
}
}
# }
# }
# }
}
}
}