IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Use of uninitialized value


Sujet :

Langage Perl

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 87
    Points
    87
    Par défaut Use of uninitialized value
    Bonjour,

    Je bosse sur un parser de fichier .xml. Je n'utilise pas le module XML:arser car 2 expressions régulières me suffiront amplement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    32
    33
    GetOptions("file:s" => \my $file);
    
    if (defined($file))
    {
        if (-e $file)
        {
            open(my $file_handle, "<", $file) or die "Erreur avec l\'ouverture du fichier $file : $!\n";
            
            while (my $line = <$file_handle>)
            {
                my $login = Parser($line, "<login>");
            }
            close($file_handle);
        }
        else
        {
            print "Le fichier $file n'existe pas";    
        }
    }
    else
    {
        print $usage;
    }
    #
    # Function
    #
    sub Parser
    {
        my ($line, $expr) = shift;
        
        print "$line";
        print "$expr";
    }
    Ce bout de code me retourne "Use of uninitialized value $expr in string" qui correspond à la ligne print "$expr";
    Je ne comprends pas cette erreur. Ma variable $expr est bien déclaré dans la fonction et doit récupérer <login>.. ça fonctionne très bien pour $line pourtant.

    Soit j'ai raté quelque chose de tout bête, soit je n'ai pas tout compris :-/
    Merci d'avance pour vos lumières

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par cassis2k Voir le message
    Bonjour,

    Je bosse sur un parser de fichier .xml. Je n'utilise pas le module XML:arser car 2 expressions régulières me suffiront amplement.



    Ce bout de code me retourne "Use of uninitialized value $expr in string" qui correspond à la ligne print "$expr";
    Je ne comprends pas cette erreur. Ma variable $expr est bien déclaré dans la fonction et doit récupérer <login>.. ça fonctionne très bien pour $line pourtant.

    Soit j'ai raté quelque chose de tout bête, soit je n'ai pas tout compris :-/
    Merci d'avance pour vos lumières
    shift ne retourne que la première valeur du tableau, une valeur scalaire, ici $line, "<login>" reste dans le tableau.
    Nibroc

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 87
    Points
    87
    Par défaut
    Ok je prends mieux tout de suite. Je vais chercher comment récupérer tout le contenu.
    Merci nibroc pour cette explication.

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 106
    Points : 87
    Points
    87
    Par défaut
    Grâce à toi nibroc, je suis parti dans le bon sens et j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($line, $expr) = @_;

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par cassis2k Voir le message
    Grâce à toi nibroc, je suis parti dans le bon sens et j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($line, $expr) = @_;
    C'est la bonne solution si tu es sûr que Parser sera toujours appelé avec exactement 2 arguments (ou paramètres).
    Nibroc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Use of uninitialized value in pattern match (m//)
    Par Vladkergan dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2008, 19h25
  2. Use of uninitialized value
    Par Djahny dans le forum Langage
    Réponses: 6
    Dernier message: 26/05/2007, 23h49
  3. Use of uninitialized value in string ne at
    Par Gad29 dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 09/05/2007, 13h49
  4. [USE STRICT] uninitialized value in print ...
    Par pop_up dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2006, 14h18
  5. [langage] Use of uninitialized value
    Par Batou dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2005, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo