Perl problème boucle

Fermé
lefreeman63 Messages postés 136 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 11 février 2016 - 2 mai 2011 à 11:01
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 2 mai 2011 à 14:52
Bonjour,

mon script permet d'ouvrir des fichiers de configurations de les parcourir en recherchant une ligne de config spécialement, et quand cet ligne est trouvé j'écris toutes les lignes qui suit jusqu'au "end"

mon problème est que mon script trouve ma première config mais ensuite ne trouve pas les suivante et je ne comprend pas pouquoi.



for($i = 1; $i <= $tabDSM[0] ; $i++)
{
$retour= $tabDSM[$i];
chomp($retour);
$concat ="/root/Downloads/CONF".$retour.".txt";
open(FIC4,"<", $concat) || die ("Impossible d'ouvrir le fichier $tabDSM[$i]");
print "le fichier Ouvert est : $tabDSM[$i]\n";
for($j = 1; $j <= $tabPhysique[0]; $j++)
{
$chariotPhysique= $tabPhysique[$j];
chomp($chariotPhysique);
my $p_conf="begin destination ($chariotPhysique)";
print "je recherche :$p_conf\n";
while(<FIC4>)
{
chomp($_);
if($_ eq $p_conf) {
$flag = 1;
print "j'ai trouvé :$p_conf\n";
}
if($flag == 1) {
print FIC3 "$_\n ";
}
if($_ eq $fin) {
$flag = 0;
print FIC3 "\n";
}
}
}
close(FIC4);
}


et voici le résultat :

le fichier Ouvert est : dsm_Email03
je recherche :begin destination (p_email03_1)
j'ai trouvé :begin destination (p_email03_1)
je recherche :begin destination (p_email03_Z)
je recherche :begin destination (p_email)
je recherche :begin destination (p_email02)
je recherche :begin destination (p_email03)
je recherche :begin destination (p_email02_1)
je recherche :begin destination (p_emailZZZZZ)
le fichier Ouvert est : dsm_Email
je recherche :begin destination (p_email03_1)
je recherche :begin destination (p_email03_Z)
je recherche :begin destination (p_email)
je recherche :begin destination (p_email02)
je recherche :begin destination (p_email03)
je recherche :begin destination (p_email02_1)
je recherche :begin destination (p_emailZZZZZ)
le fichier Ouvert est : dsm_Email02

je recherche :begin destination (p_email03_1)
je recherche :begin destination (p_email03_Z)
je recherche :begin destination (p_email)
je recherche :begin destination (p_email02)
je recherche :begin destination (p_email03)
je recherche :begin destination (p_email02_1)
je recherche :begin destination (p_emailZZZZZ)



y a surement un élément que je rate si quelqu'un à une idée je suis preneur

Merci d'avance

4 réponses

lefreeman63 Messages postés 136 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 11 février 2016
2 mai 2011 à 11:50
je viens de rajouter un last dans mon 3eme IF et maintenant il m'en lit 2 mais ne lit toujours pas le reste.
je vais devenir fou
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
2 mai 2011 à 12:48
Salut,

Ton script n'est pas complet.
Peux-tu l'afficher?
0
lefreeman63 Messages postés 136 Date d'inscription mercredi 20 avril 2011 Statut Membre Dernière intervention 11 février 2016
2 mai 2011 à 14:30
désolé il est trop gros et c'est un sous script de mon shell donc je suis pas sur que sa t'arrangerai et j 'ai partiellement résolu mon problème en faite il suffisait de déplacé mon open à l'intérieur de mon 2eme FOR.

merci encore et désolé pour le dérangement
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
2 mai 2011 à 14:52
Re,

partiellement résolu mon problème en faite il suffisait de déplacé mon open à l'intérieur de mon 2eme FOR.

Alors je te laisse compter combien de fois l'appel système est fait ;-)

Je vais te faire ce soir un exemple, en utilisant une autre manière.*
Celle utilisé par toi c'est un peu la méthode classique du C
0