|
|
|
|
Bonjour,
J'ai un souci dans mon code Perl; j'utilise plusieurs boucle foreach imbriquées (certaines ouvrent des fichiers txt)
Voici mon code :
Foreach $line (@K) -- Parcours d'un tableau
if ($line =~ ...)
Foreach $... -- Parcours d'un hash
if ...
Foreach $data ... -- Parcours d'un fichier txt
if $data =~ ...
if (...)
Foreach ... -- Parcours d'un autre tableau d'un maximun de 4 lignes
(instructions)
Cependant lorsque j'execute il trouve la première condition de ma première boucle : execute toutes les instructions qui suivent mais ne continue plus à parcourir mon premier foreach et sort completement. J'ai essayé de rechercher du coté de next, last ou redo mais sans résultat.
Quelqu'un pourrait-il m'aider?
Merci.
Configuration: Windows XP Internet Explorer 6.0
Bonjour,
|
Voici mon code en entier :
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). |
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.
|