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 -
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
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
A voir également:
- Perl problème boucle
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
4 réponses
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
je vais devenir fou
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
merci encore et désolé pour le dérangement
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
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