Boucles imbriquées Perl
Fermé
Ptesoleil
Messages postés
27
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
27 août 2008
-
6 août 2008 à 12:26
Ptesoleil Messages postés 27 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 27 août 2008 - 6 août 2008 à 17:32
Ptesoleil Messages postés 27 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 27 août 2008 - 6 août 2008 à 17:32
A voir également:
- Boucles imbriquées Perl
- Active perl - Télécharger - Édition & Programmation
- Excel fonction si et ou imbriquées - Guide
- Perl extension - Forum Perl
- Perl ping ✓ - Forum Perl
- Fonction si et recherchev imbriquées excel - Forum Excel
5 réponses
Bonjour,
Là comme ça c'est pas évident de te répondre, ce qui est sur c'est qu'un simple if dans un foreach n'arretera jamais son exécution (sauf en cas de next / last / goto / return / etc...). Si tu pouvais mettre tout ton code (ou au moins la structure complète) ça serait déjà plus simple de voir ce qui ne va pas, parce que là y'a pas grand chose comme infos...
Essaye eventuellement de voir si le premier tableau que tu parcours contient bien plusieurs élements, on sait jamais^^
Là comme ça c'est pas évident de te répondre, ce qui est sur c'est qu'un simple if dans un foreach n'arretera jamais son exécution (sauf en cas de next / last / goto / return / etc...). Si tu pouvais mettre tout ton code (ou au moins la structure complète) ça serait déjà plus simple de voir ce qui ne va pas, parce que là y'a pas grand chose comme infos...
Essaye eventuellement de voir si le premier tableau que tu parcours contient bien plusieurs élements, on sait jamais^^
Ptesoleil
Messages postés
27
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
27 août 2008
6 août 2008 à 15:36
6 août 2008 à 15:36
Voici mon code en entier :
Quand je parcours mon premier tableau y a bien tous les elements mais une fois que je rentre dans les boucles y a plus qu'une ligne (contenant les informations que je voulais mais ne parcours pas le reste des lignes du premier tableau donc il me manque des informations).
foreach $linekmtn (@$KMTN)
{
if ($linekmtn =~ /^\s\#(\d+)\#\s(\d.+)\s\{(\w.+)\}/)
{
$specie1 = $1;
$val = $2;
$compound = $3;
foreach $k (sort keys %$SpecRef)
{
if ($specie1 eq $k)
{
foreach $data (@$allfile)
{
if ($data =~ m/(\d+\.\d+\.\d+\.\d+)\t(\w.+)\t(\w.+)\tc\t/i)
{
$valEC = $1;
$NameReact = $2;
$Equation = $3;
if ($valEC eq $numEC)
{
chomp $data;
$data =~(s/^\d+\.\d+\.\d+\.\d+\t\w.+\t\w.+\tc\t//gi);
@t = split (/;/,$data);
foreach my $ligne (@t)
{
chomp $ligne;
($shortC,$nameC,$formulaC) = split (/\t/,$ligne);
print "$valEC\n"."ligne :$nameC / $compound \n";
if ($nameC eq $compound)
{
print FIL ("\n KM : $specie1 $compound$val");
}
}
}
}
}
}
}
}
}
Quand je parcours mon premier tableau y a bien tous les elements mais une fois que je rentre dans les boucles y a plus qu'une ligne (contenant les informations que je voulais mais ne parcours pas le reste des lignes du premier tableau donc il me manque des informations).
davlar
Messages postés
75
Date d'inscription
lundi 26 novembre 2007
Statut
Membre
Dernière intervention
11 mai 2009
57
6 août 2008 à 16:23
6 août 2008 à 16:23
Bonjour
As-tu essaye de declarer tes tableaux avant ta serie de foreach() ?
David
As-tu essaye de declarer tes tableaux avant ta serie de foreach() ?
David
A priori je ne vois rien de choquant.
Question, tu utilises use strict; et use warnings; ? Si ce n'est pas le cas, il est possible que ton programme comporte un bug qui n'entraine pas d'affichage d'erreur, mais met un terme à l'exécution (mauvaise valeur dans une de tes variables par exemple).
Question, tu utilises use strict; et use warnings; ? Si ce n'est pas le cas, il est possible que ton programme comporte un bug qui n'entraine pas d'affichage d'erreur, mais met un terme à l'exécution (mauvaise valeur dans une de tes variables par exemple).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ptesoleil
Messages postés
27
Date d'inscription
jeudi 17 avril 2008
Statut
Membre
Dernière intervention
27 août 2008
6 août 2008 à 17:32
6 août 2008 à 17:32
Biensur que j'utilise un use strict et use warnings mais il ne me signale pas d'erreur. J'ai ausssi déclarer mes tableaux pas de souci. En faite j'ai reglé mon probleme : j'ai utilisé next if au lieu de if. et comme je remplace mon debut de ligne "data" par rien : j'ai ajouté une autre variable $da2 pour que la valeur de $data soit gardée en memoire.
chomp $data;
$da2 = $data;
$da2 =~ (s/^\d+\.\d+\.\d+\.\d+\t\w.+\t\w.+\tc\t//gi);
@t = split (/;/,$da2);
Cependant comme avant j'avais mis un if je voulais aussi ajouté un elsif qui ne marche plus si je met next if - donc j'ai fermé le foreach et réouvert. Pas très propre mais ca marche .
Merci.
chomp $data;
$da2 = $data;
$da2 =~ (s/^\d+\.\d+\.\d+\.\d+\t\w.+\t\w.+\tc\t//gi);
@t = split (/;/,$da2);
Cependant comme avant j'avais mis un if je voulais aussi ajouté un elsif qui ne marche plus si je met next if - donc j'ai fermé le foreach et réouvert. Pas très propre mais ca marche .
Merci.