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 :

hastable et getoptions() - help :'(


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 15
    Par défaut hastable et getoptions() - help :'(
    salut a tous,

    j'ai plusieurs petites questions qui normalement devrai pas vous poser trop de souci

    1- je regarde en details le code de l'agent FusionInventory : et pour le moment il y'a des chose qui me perturbe

    sa c'est un tableau associatif ? une table de hachage !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $default = {
        'ca-cert-dir'             => '',
        'ca-cert-file'            => '',
        'conf-file'               => '',
        'color'                   => 0,
        'daemon'                  => 0,};
    alors pourquoi ne pas faire une declaration classique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    my %default = (
        'ca-cert-dir'             => '',
        'ca-cert-file'            => '',
        'conf-file'               => '',
        'color'                   => 0,
        'daemon'                  => 0,);
    quelle est l'avantage de coder acec la premiere solution ?

    2- la fonction getoptions().

    si l'on utilise un table de hachage %config tel que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    my %config=("lazy"=>0);
     
    Getopt::Long::Configure( "no_ignorecase" );
     
     
     
        GetOptions(
     
            %config,
     
            'lazy'};
     
    print $config{lazy} // 0
    ou de cette maniere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    my %config=();
     
    Getopt::Long::Configure( "no_ignorecase" );
     
     
     
        GetOptions(
     
            %config,
     
            'lazy'};
     
    print $config{lazy} // Use of uninitialized value in print at ./test.pm line xx.
    dans les 2 cas précedents les valeur ne sont pas mise a jour par le passage dans la fonction getoptions


    par contre avec un scalaire qui ressoit un table de hachage :
    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
     
     
     
    my $config={};
     
     
     
    Getopt::Long::Configure( "no_ignorecase" );
     
     
     
        GetOptions(
     
            $config,
     
            'lazy',
     
            );
     
     
    print $config->{"lazy"}; // 1
    la variable $config->{"lazy"} est CREER et initialiser a 1


    donc je suis un peux perdu je me met au perl depuis quelques jours et la je ne comprend pas trop.

    voilas si quelqu'un a une piste , une réponse.
    merci a tous ceux qui se pencherons sur mon probleme
    bonne aprem

  2. #2
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Bonjour,

    1) Pour la partie table de hachage.
    En fait, la première déclaration utilise une référence sur une table de hachage alors que la deuxième crée une table de hachage. En ce qui concerne les avantages/inconvénients de chaque déclaration, cela dépend du contexte et de ce que tu veux en faire. Leur manipulation ne se fait pas tout à fait de la même façon : quand on manipule une référence il faut d'abord déreferencer pour avoir accès aux clefs/valeurs de la table de hachage. Tu peux regarder des tutos sur la manipulation des table de hachage pour plus d'informations.

    Voici un exemple d'utilisation des deux méthodes :
    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
     
    use strict;
    use warnings;
     
    # Initialisation d'un référence sur une table de hachage
    my $hash_ref = { toto => 1,
                     titi => 0};
     
    # Initialisation d'une table de hachage
    my %hash = ( toto => 1,
                 titi => 0);
     
    # Va afficher la valeur de toto via la reference et le hash
    print "reference sur hash (version 1): $hash_ref->{toto}\n";
    print "reference sur hash (version 2): $$hash_ref{toto}\n";
    print "hash : $hash{toto}\n";
    2) En ce qui concerne getopt, je te conseille d'aller voir l'exemple de Djibril dans les sources et aussi la documentation du module car dans ton exemple, la méthode utilisée n'est pas la bonne.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 15
    Par défaut
    merci de ta reponse

    1- je vais aller regarder de plus pres les docs pour les tables de hachages j'ai du a mal à saisir ce que tu entend par reference sur une table de hachage. mais sa ira mieux apres les docs... j'espere .

    2- pour ce qui est de getptions() ma question est motiver par une etude du code esxistant de l'agent FusionInventory (agent d'inventaire automatisé de parc informatique open source) et cette methode est appeler comme presenter dans le dernier extrait de code de mon premier post


    dans tout les cas je vais relire les docs en plus des exmples que tu m'as donnés et je reviendré poster ou fermer le topic

    --- edit ---

    je viens de trouver pourquoi la fonction getOptions ne fonctionais pas dans mon cas il manquer simplement un "\" lors de l'appel de la fonction



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    my %config=();
     
    Getopt::Long::Configure( "no_ignorecase" );
     
     
     
        GetOptions(
     
            \%config,
     
            'lazy'};
     
    print $config{lazy} // 1

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/03/2003, 16h20
  2. help please
    Par atom267 dans le forum CORBA
    Réponses: 2
    Dernier message: 24/01/2003, 10h41
  3. [Kylix] fichiers help kylix2 oe ??
    Par sdoura2 dans le forum EDI
    Réponses: 2
    Dernier message: 29/11/2002, 14h32
  4. Help :Problème de clignotement
    Par LE CHAKAL dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/08/2002, 10h53
  5. Help InnoSetup ou Installshield
    Par buzz dans le forum Outils
    Réponses: 4
    Dernier message: 30/07/2002, 15h26

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