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 :

probleme de variable


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Par défaut probleme de variable
    Bonjour à tous,

    Je débute en perl et j'essai de me faire un code qui permette de lire un fichier et de stocker le text commencant par bot_ dans des variables.
    Mon probleme vient du fait qu'en dehors de ma fonction ma variable ne semble pas existente.

    Dans le fichier supa.conf j'ai mit ceci:

    # test
    bot_nick Henry
    bot_ident testy
    bot_name Test de chaine
    # Fin
    Maintenant voici le code:

    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
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
     
    # loadconf();
    # Initialisation de la configuration
    sub loadconf {
    	my $path = "supa.conf";
    	my $bot = shift;
     
    	open(FILE,$path) or die("Impossible d'ouvrir $path : $!");
    	while (defined(my $text = <FILE>)) {
    		chomp($text);
    		if ($text =~ /^bot_([^ ]*) (.*)/) {
    			$bot->{$1} = $2;
    			print "$1 = $bot->{$1}\n"; # test 1
    			}
    	}
    	close(FILE);
    }
     
     
    &loadconf();
     
    #test 2
    print "$bot->{nick}\n";
    # Fin du code
    Voila, en esperent que quelqu'un puisse m'aider a corriger ca
    à plus tard et merci
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut
    Salut Ganondorf,

    Ta variable '$bot' n'existe que dans ta fonction, car déclarée en tant que telle 'my $bot'. Si tu veux qu'elle soit globale, tu sors le 'my $bot' de la fonction (ie: au début du script par exemple) et tu ne fais que l'affectation dans ta fonction (ie: '$bot = shift;').

    De plus, tu appelles ta fonction loadconf sans paramêtre alors que tu essayes de récupérer un paramêtre dans ladite fonction (ie: toujours la ligne 'my $bot = shift;').

    Va falloir faire un choix vieux: variable globale ou paramêtre modifiable ?

    Dans le cas d'un paramêtre modifiable, faut passer une référence sur une table de hachage en guise de paramêtre à ta fonction 'loadconf', mais tu le savais certainement déjà

    N'hésite pas si tu as des questions/interrogations

    PluX59
    P.S: Ah bah alors, a paumé la triforce ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Par défaut
    Merci PluX59, ca fonctionne impec

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut
    Set POST="Résolu" alors (Y'a un bouton affiché sur chacune des lignes du sujet que tu as ouvert...n'a qu'à cliquer )

    Dis, juste en passant, tu ne serais pas fan de Zelda par pur hasard ?

    PluX59

  5. #5
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Par défaut
    Re

    J'ai une autre question maintenant j'arrive a afficher ma variable $bot dans tout le fichier mais comment faire pour la lire a partir d'un autre fichier ?

    J'ai utilisé 'use autre_fichier;' mais ca ne fonctionne pas

    J'ai ecrit mon fichier principal comme ceci:

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #!/usr/bin/perl
    #
    # Supa Bot IRC
    #
    #########################################################
     
    use strict;
    use warnings;
     
    # Supa modules
    use Divers;
     
    # Global vars
    my $bot;
     
    &loadconf(); # Lecture du fichier de configuration
    &sockopen($bot->{'serv'}, $bot->{'port'}); # Lancement du socket
     
    # Fin 
     
    Je me sert du fichier Divers.pm pour les fonctions:
    Le voici:
     
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
    use Main;
     
     
    # loadconf();
    # Initialisation de la configuration
    sub loadconf {
    	my $path = "supa.conf";
     
    	open(FILE,$path) or die("Impossible d'ouvrir $path : $!");
    	while (defined(my $text = <FILE>)) {
    		chomp($text);
    		if ($text =~ /^bot_([^ ]*) (.*)/) {
    			$bot->{$1} = $2;
    			}
    	}
    	close(FILE);
    }
     
     
    sub sockopen {
    	my $serv = shift;
    	my $port = shift;
    	print "Connexion sur $serv $port\n";
    }

    Un/Des idées sur mon soucis ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Par défaut
    Re,

    Commence par remplacer 'my $bot' par 'our $bot' pour voir...

    Eh: t'es fan de Zelda ou pas ? (trop occupé à Perl pour me donner une réponse )... Juste en rapport avec ton pseudo

    PluX59

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Par défaut
    Re PluX,

    La derniere fois que j'ai joué à zelda c'etait sur adventure of link sur NES,
    disons que je suis un ancien mordu, j'ai pas suivi le reste de la saga, j'preferai les bons graphisme en 2d !!! lol

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

Discussions similaires

  1. Probleme de variable entre SQL et Php
    Par copin dans le forum Langage SQL
    Réponses: 6
    Dernier message: 17/06/2005, 10h58
  2. Réponses: 10
    Dernier message: 03/05/2005, 21h57
  3. [langage] Probleme de variable transfert de contenu
    Par Ludo167 dans le forum Langage
    Réponses: 10
    Dernier message: 08/07/2004, 11h40
  4. [algo]probleme de variables hotes ds un insert
    Par omega dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/03/2004, 09h03
  5. Réponses: 2
    Dernier message: 04/01/2004, 15h14

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