Perl problème boucle

lefreeman63 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention   -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
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   Statut Membre Dernière intervention  
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Ton script n'est pas complet.
Peux-tu l'afficher?
0
lefreeman63 Messages postés 136 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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