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 :

perl et les fonctions


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut perl et les fonctions
    Bonjour

    J'ai deux fonctions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sub fonction2 {
    print $server;
    }
    et la deuxième:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sub fonction1 {
    my $server="blabla"
    return $server;
    &fonction2();
    }
    Ma question est simple, je n'arrive pas à afficher le contenu de $server ? Les fonctions sont placés dans le même ordre dans mon code.

    Merki

  2. #2
    Expert confirmé
    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
    Par défaut
    Perl est un langage de programmation, pas un shell !! (autrement dit toutes les variables ne sont pas globales)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sub fonction2 {
      print $server;
    }
    Ceci peut avoir deux sens : soit il existe une variable globale $server, et dans ce cas c'est sa valeur qui sera affichée, soit il existe une variable lexicale $server déclaré avant la déclaration (pas l'utilisation) de fonction2 et dans la même portée lexicale et dans ce cas c'est sa valeur qui sera affichée. Le deuxième cas est prioritaire sur le premier.

    Ce qui est certain c'est que ça ne fera pas ce que tu veux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub fonction1 {
    my $server="blabla"
    return $server;
    &fonction2();
    }
    Je suppose que tu t'attendais à l'affichage de "blabla" ? En dehors du fait que de toute façon "&fonction2();" se trouve après un return inconditionnel et qu'elle ne sera jamais exécutée... De toute façon $server est ici une variable lexicale (déclarée par my) et est donc invisible en dehors de sa portée lexicale, autrement dit fonction2 ne le voit pas, et n'affichera donc pas "blabla", quoi qu'il affiche.

    Je suppose que tu as simplifié ton code pour montrer le problème (puisque ce que tu proposes ici n'a aucun sens), mais tant que je ne sais pas ce que tu veux faire, je ne peux pas t'aider beacoup plus.

    Utilises-tu le pragma "strict" ? Ca t'aiderait sans doute à éviter des erreurs syntaxiques aussi flagrantes.
    Encore une chose, on n'appelle pas les fonctions en les préfixant avec un "&", c'est une survivance de Perl4 ! Sauf cas très spéciaux, on utilise le & que quand on veux obtenir une référence sur une fonction.
    --
    Jedaï

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je prends note de tes remarques. Merci de ton aide

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

Discussions similaires

  1. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55
  2. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58
  3. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  4. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  5. Réponses: 7
    Dernier message: 24/05/2003, 15h56

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