Encore des problèmes de variables
Bonjour le forum,
Je suis confronté à un problème de variables, en fait je crois zavoir diagnostiquer avec l'aide de l'outil de recherche l'origine du problême mais je ne sais pas y remédier.
Je m'explique :
J'ai une variable globale qui doit me servir à faire des tests dans une boucle "foreach", or je crois qu'elle devient variable locale dans cette dite boucle.
Mon Code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
open(RES,'resultat.txt');
#j'initialise la variable nomfile
$nomfile = "vide";
@lignes = <RES>;
foreach $ligne(@lignes){
#ici je souhaite pouvoir faire une série de test en récupérant $nomfile telle qu'elle a été modifiée précédemment.
if ($nomfile ="vide" && $ligne=~ /.*\.html/ig){
$nomfile = $ligne;
$nomfile =~ s/ \.//gi;
}
if($ligne=~ /\*+\ \./){
$nomfile = "vide";
}
if ($ligne=~ /^0+\d+/){
print $nomfile,"\n";
print $ligne,"\n";
}
} |
Donc cette variable $nomfile est sensée me permettre de faire des tests et je souhaite y accéder d'une occurence à l'autre.
Si vous avez des idées je serai très reconnaissant.
Merci
Re: Encore des problèmes de variables
Citation:
Envoyé par mat99
Code:
1 2 3 4 5
|
#ici je souhaite pouvoir faire une série de test en récupérant $nomfile telle qu'elle a été modifiée précédemment.
if ($nomfile ="vide" && $ligne=~ /.*\.html/ig){
... |
Alors ... un test d'égalité se fait avec l'opérateur == s'il s'agit d'un test sur des nombres et avec l'opérateur eq s'il s'agit d'un test sur des chaines de caractères.
En outre, dans un test, donc une évaluation logique, je préfère utiliser l'opérateur and, plutot que && qui sert davantage à construire des séquences d'exécution selon le résultat des opérations successives.
Ainsi, moyennant ces deux remarques, j'écrirais :
Code:
1 2
| if (($nomfile eq "vide") and ($ligne=~ /.*\.html/ig)){
... |
Ce n'est peut être pas suffisant, je n'ai pas regardé les traitements que tu fais, mais cela aidera !