Forum Programmation.perl boucle for

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-2
3
oct.
2015

salut j'ai un sourci avec une boucle for peut etre quelqu'un ici pourrai me dire ce que ne va pas

for my $file (@files) {  

    my $twig1 = XML::Twig->new(

        twig_handlers => {

            'Parameter' => sub {

                my $attr_value = $_->{'att'}->{'value'};  #ligne 77

                print $FhResult $attr_value . ", ";  #ligne 78
            },
        },
    );

lorsque j'execute le code je recois cette erreur je ne comprend pas alors que j'ai defini a la ligne 77 la variable $attr_value

Use of uninitialized value $attr_value in concatenation (.) or string at
selbst.pl line 78.
  • # deja vu dans les demandes precedentes

    Posté par  . Évalué à 2.

    il te dit que $attr_value n'est pas initalisée quand tu veux faire la concatenation (au moment du print)

    cela laisse supposer que la ligne 77 ne fait rien ou echoue dans ce qu'elle est censé faire…

    de ce que je lis sur cet extrait de code, tu veux aller lire un element de la ligne courante ($_)
    mais je ne vois nulle part l'ouverture du fichier, et la boucle de lecture de ce fichier.

    pourtant ce sont des choses que tu as deja faites dans tes demandes precedentes.

    faire une boucle sur une liste de fichier
       ouvrir le fichier
       faire une operation (ou plusieurs)
       fermer le fichier
    fermer la boucle
  • # Non initialisée

    Posté par  . Évalué à 3. Dernière modification le 03 octobre 2015 à 18:23.

    Si ta variable n'est pas initialisée, c'est que l'attribut en question n'a pas de valeur en ligne 77, donc que dans ton fichier xml cette entrée n'existe pas. Je ne sais pas quel est le comportement que tu veux dans ce cas, mais s'il s'agit d'une valeur qui peut apparaître ou ne pas apparaître, tu peut peut-être simplement mettre :

    my $attr_value = $_->{'att'}->{'value'} // "";

    en rajoutant donc // "" pour le cas où il n'y a rien.

    Edit : grillé, c'est (presque) la même chose que proposé juste au-dessus.

    • [^] # Re: Non initialisée

      Posté par  . Évalué à -6.

      Merci anaseto,
      c'est exactement ce qui me manquait

      Merci a tous de vos propositions

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.