Perl et imbrication de foreach

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
A voir également:

2 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

essaie plutôt
my (@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"; 
        }
      }  
    } 
  } 
} 
0
picocpge
 
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
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > picocpge
 
As-tu utilisé use strict;use warnings; au début de ton script pour voir les messages d'erreur et d'avertissement?
0
picocpge > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
oui et il n'y a pas d'erreurs...
c juste qu il ne reconnait pas mon @t2 pour entrer dans le second foreach et donc le programme sort des boucles sans rien faire
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > picocpge
 
as-tu la possibilité de me donner le code complet?
0
picocpge
 
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";
}
}
}
}
}
# }
# }
# }
}
}
}
0