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 :

[langage] Passage de variables...


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 58
    Points : 22
    Points
    22
    Par défaut [langage] Passage de variables...
    Bonjour,

    je sais que la question a certainement déjà été posée mais je ne sais plus du tout.

    j'ai une variable dans un programme principal et il faut que mon .pm auquel je fais appel puisse utiliser cette variable ?

    un peu d'aide svp ?

  2. #2
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Bonjour,

    Tu peux passer cette variable a une fonction de ton .pm.
    C'est le plus simple.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    oui ok mais comment c'est là ma question

  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
    Je ne suis pas sûr de très bien comprendre ? Tu ne sais pas passer des paramètres à une fonction ? Dans ce cas, la meilleure chose à faire c'est de lire perlsub (perldoc perlsub ou man perlsub selon ta plateforme).

    Néanmoins je peux essayer de résumer : quand tu appelles une fonction, tous les arguments sont placés dans un tableau : @_.
    Ensuite tu peux manipuler ces arguments, soit en faisant directement allusion à eux par $_[0] (par exemple) soit en les mettant d'abord dans une variable avec un nom plus explicite avant de les utiliser.
    Cependant il y a une subtilité : le contenu de @_ est en fait constitué d'"alias" des arguments, c'est à dire que si tu le modifies, tu modifies en fait les variables que tu as passé à ta fonction à l'origine !! Ce qui n'est pas le cas si tu utilise une variable intermédiaire, car celle-ci n'est qu'une copie de la valeur de l'argument.

    Je te mets un exemple pour être plus clair :
    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
     
    sub neModifiePas {
        my $arg = $_[0];
        $arg++;
        return $arg;
    }
     
    sub modifie {
        $_[0]++;
        return $_[0];
    }
     
    my $i = 0;
     
    my $i2 = neModifiePas( $i );
    #après cet appel $i2 vaut 1 mais $i vaut toujours 0
     
    my $i3 = modifie( $i );
    #après cet appel $i3 vaut bien 1 et $i vaut aussi 1 !
    Comme tu le vois, la première fonction ne touche pas à la valeur de son argument, tandis que la deuxième la modifie.

    En espérant que ça t'auras aidé. Si ce n'est pas le cas, essaie de préciser ton problème, explique nous ce que tu essaies de faire.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    je me fais éffectivement mal comprendre :

    dans un programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #/usr/bin/perl -w
     
    use gc;  #Etant mon package dans gc.pm#
     
    use @ISA(Exporter)
    use vars qw(@ISA @EXPORT);
    @ISA = qw(Exporter);
    @EXPORTER = ($nomApplication);
    et pour gc.pm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #/usr/bin/perl -w
     
    my ($nomApplication)=shift;
     
    print "$nomApplication";
    [quote]
    $nomApplication n'est pas reconnu.
     
    espérant avoir été un peu plus clair j'attends un peu d'aide, merci.[/quote]

  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
    C'est un défaut de conception : tu n'es pas censé utiliser dans un module une variable initialisée dans un programme (à part par un appel de fonction), c'est l'inverse.
    Un module se doit d'être indépendant des programme qui l'utilisent, c'est le programme qui utilise le module, et non l'inverse.
    Cela dit, si tu nous expliquais réellement ce que tu essaies de faire et pourquoi tu en as besoin, nous pourrions mieux t'aider.

    Je te signale par ailleurs que le code contenu dans un module utilisé par un programme est exécuté lors de la phase de compilation de ce programme, donc es-tu sûr que c'est ce que tu veux faire ??

    Normalement le code contenu dans un module est soit dans une définition de fonction, soit dans un but d'initialisation du module.
    (Le nom du fichier qui a été lancé est disponible dans $0, c'est une variable automatiquement mise à disposition par Perl dès la compilation, donc tu peux l'utiliser dans l'initialisation d'un module)

  7. #7
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Je rejoins Jedai. Il y a un probleme de conception du programme.
    Sinon tu peux tres bien passer des variables pour ton .pm avec une fonction. (Ca fera un peu comem une classe)

    Ce que j'ai dit au debut.

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    OK, ce que vous me dites c'est de faire une fonction dans le .pm ex:faisant partide gc.pm

    dans le prog principal je l'utilise comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use gc;
    &gc::TrouveNom($nomapplication);
    je pense que là je doit être dans le vrai oubien ?

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 58
    Points : 22
    Points
    22
    Par défaut
    ca y est c'est OK tout fonctionne.
    en effet en passer un argument à la fonction du .pm cela a fonctionné.
    merci encore et désolé du dérangement.

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

Discussions similaires

  1. [langage] Probleme passage de variables entre modules
    Par Ludo167 dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2004, 12h25
  2. [langage] incrementation de variable dans une boucle
    Par mimilou dans le forum Langage
    Réponses: 15
    Dernier message: 16/04/2004, 13h23
  3. [langage] Passage de parametre lors de l execution
    Par WetzlarMan dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2004, 13h28
  4. Réponses: 2
    Dernier message: 04/01/2004, 15h14
  5. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03

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