Perl et imbrication de foreach [Fermé]

Signaler
-
 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

2 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543
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"; 
        }
      }  
    } 
  } 
} 
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543 > picocpge
As-tu utilisé use strict;use warnings; au début de ton script pour voir les messages d'erreur et d'avertissement?
>
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019

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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 543 > picocpge
as-tu la possibilité de me donner le code complet?
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";
}
}
}
}
}
# }
# }
# }
}
}
}