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 :

Portée de variable - if


Sujet :

Langage Perl

  1. #1
    Membre du Club Avatar de blacksnake
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 64
    Points : 69
    Points
    69
    Par défaut Portée de variable - if
    Bonjour,

    J'aimerai savoir pourquoi le code suivant affiche "hello foo" et non "hello bar".

    Comment y remédier ?

    Merci à vous.

    ps : je suppose que la question a été posée x fois, mais je n'ai rien trouvé ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    use strict;
     
    my $nom = "foo";
    my $str = "hello $nom";
    my $i   = 1;
     
    if ($i == 1) {
       $nom = "bar";
       print("$str\n");
    }

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 375
    Points : 1 030
    Points
    1 030
    Par défaut
    Bonjour,

    Parce que str vaut "hello foo" et que c'est str qui est affichée.

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Cela n'a rien à voir avec "la portée de variable - if"; ça a tout à voir avec le temps d'évaluation d'une variable. Une façon de le faire est de construire une sub anonyme.
    Code perl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    use strict; use warnings;
    my $nom = "foo";
    my $str = "hello $nom";
    print $str."\n";
    my $strr=sub{"hello $nom"};
    $nom = "bar";
    print $strr->()."\n";
    print &$strr."\n";

  4. #4
    Membre actif Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 151
    Points : 208
    Points
    208
    Par défaut
    Citation Envoyé par xdelatour Voir le message
    Bonjour,

    Parce que str vaut "hello foo" et que c'est str qui est affichée.
    -> c'est sur ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my $nom = "foo";
    my $str = "hello $nom";  # ici $str vaut bien "hello foo"
    my $i   = 1;
     
    if ($i == 1) {
       $nom = "bar"; # tu affectes "bar" à la variable $nom mais 
       print("$str\n");  # $str vaut toujours "hello foo" puisque inchangée ...
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    my $nom = "foo";
    my $str = "hello $nom";  # ici $str vaut bien "hello foo"
    my $i   = 1;
     
    if ($i == 1) {
       $nom = "bar"; # tu affectes "bar" à la variable $nom 
       $str = "hello $nom"; # et la tu affectes "hello bar" à $str
       print("$str\n");  # du coup $str vaut bien  "hello bar" 
    }

Discussions similaires

  1. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  2. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  3. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  4. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05
  5. [FLASH MX 2004][XML]portée de variable
    Par marco_ dans le forum Flash
    Réponses: 8
    Dernier message: 29/04/2004, 15h47

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