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 :

petit problème variable perl bizzare


Sujet :

Langage Perl

  1. #1
    Invité
    Invité(e)
    Par défaut [Résolu]petit problème variable perl bizzare
    Bonjour,

    étant un habitué du php, je me suis décidé à apprendre perl plus adapté pour des scripts système que le php. Donc c'est mon premier script perl soyez pas trop dur s'il est pas très propre :-)

    Le script actuel qui me pose problème me permet de faire un appel snmp pour récupérer des données.

    Je vais essayer de détailler mon problème le plus simplement possible

    je récupère dans une base de données une liste d'équipements dans une table de hashage : %equipement
    - la clé de la table est la clé unique du tuple dans la bdd
    - il y a 2 attributs : l'adresse ip et la communauté snmp

    ex :
    $equipement{12}{ip} ; // 127.0.0.1
    $equipement{12}{community} ; // public

    je récupère dans cette base de données une liste d'OID snmp pour lesquelles je dois récupérer des infos : @oid_list
    une liste d'OID.

    voici mon probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    my ($session, $error) = Net::SNMP->session(
    			-hostname	=> $equipment{$equipment_id}{ip};,
    			-community	=> $equipment{$equipment_id}{community});
     
    	$result = $session->get_request(-varbindlist => \@oid_list);
    	if (! defined($session)) { printf("ERROR: %s.\n", $error); exit 1; }
    	$session->close;
     
    #la j'affiche les résultats
    foreach my $oid (@oid_list) { print "[".$oid."]->[".$result->{$oid}."]\n"; }
    et j'ai l'erreur suivante :
    pour toutes les lignes :
    Use of uninitialized value in concatenation (.) or string at perl_poller.pl line 155.

    la ligne 155 c'est celle la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach my $oid (@oid_list) { print "[".$oid."]->[".$result->{$oid}."]\n"; }
    MAIS j'ai fait qq tests avec le code suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $hostname = $equipment{$equipment_id}{ip};
    	my $community = $equipment{$equipment_id}{community};
    	my $hostname2 = "192.168.17.11";
    	my $community2 = "public";
    	print "HOSTNAME : $equipment{$equipment_id}{ip} / COMMUNITY : $equipment{$equipment_id}{community}\n";
    	print "HOSTNAME 2 : $hostname2 / COMMUNITY2 : $community2\n";
    $hostname et $community sont les valeurs issues de ma table de hashage remplie via la bdd

    $hostname2 et $community2 sont les memes valeurs entrées en DUR.

    dans les 2 cas ca s'affiche correctement :

    print "HOSTNAME : $equipment{$equipment_id}{ip} / COMMUNITY : $equipment{$equipment_id}{community}\n";
    print "HOSTNAME 2 : $hostname2 / COMMUNITY2 : $community2\n";
    par contre :
    La j'ai toujours la meme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my ($session, $error) = Net::SNMP->session(
    			-hostname	=> $hostname,
    			-community	=> $community);
    La ca marche sans soucis, il va bien chercher la variable SNMP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my ($session, $error) = Net::SNMP->session(
    			-hostname	=> $hostname2,
    			-community	=> $community2);

    Je comprends pas les 2 variables s'affichent et contiennent la meme chose.

    qqn aurait une solution ?

  2. #2
    Membre régulier Avatar de elvivo
    Inscrit en
    Mai 2002
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 105
    Points : 104
    Points
    104
    Par défaut
    Salut,

    Il manquerait pas un my devant la premiere utilisation de ta variable $result ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    hum je vais essayer voir ce que ca donne mais je comprend pas pourquoi ca marcherais dans un cas et pas dans l'autre

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu as regardé ce qu'il y a dans $error ?
    As tu vérifié s'il n'y a pas un retour à la ligne parasite sur community ?

    --
    Jedaï

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Jedai
    Tu as regardé ce qu'il y a dans $error ?
    a premiere vue rien
    Citation Envoyé par Jedai
    As tu vérifié s'il n'y a pas un retour à la ligne parasite sur community ?
    --
    Jedaï
    c'est quoi l'équivalent de trim (php) dans perl ? pour que j'essaie ca

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    chomp() mais c'est plus spécifique que trim : ça retire une fin de ligne à la fin de la string s'il y en a une. Pour obtenir l'équivalent de trim(), il faut faire :
    s/^\s*|\s*$//g.

    --
    Jedaï

  7. #7
    Invité
    Invité(e)
    Par défaut
    j'ai relu mon programme en entier

    cherché ce qui merdais,

    en fait une accolade mal placée faisait sortir certaines variables d'un boucle et donc ne s'initialisaient pas

    merci de votre aide ;-)

    maintenant ca marche

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

Discussions similaires

  1. [AJAX] Déclaration de variable
    Par Halaster dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/03/2008, 16h53
  2. Réponses: 7
    Dernier message: 09/12/2007, 11h51
  3. Petit problème avec prog perl
    Par lavm01 dans le forum Langage
    Réponses: 1
    Dernier message: 30/07/2007, 22h56
  4. Petit problème avec les pointeurs et variable
    Par mitherkiller dans le forum C
    Réponses: 5
    Dernier message: 09/03/2007, 22h05
  5. Réponses: 3
    Dernier message: 19/09/2006, 20h12

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