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 :

Un pointeur pour le contexte d'une fonction


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de dca_marshall
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Par défaut Un pointeur pour le contexte d'une fonction
    Bonjour,

    J'ai beau fouiller, je ne trouve pas !

    Existe-t-il un pointeur disponible pour obtenir le contexte d'une fonction, quand celle-ci en appelle une autre ?

    Dans la fonction appelée, je voudrai récupérer le stack de variables de la fonction appelante.

    On récupère bien son nom et la ligne dans le module avec caller, il n'y a pas un truc ?

    Par avance merci de votre contribution

  2. #2
    Membre chevronné Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Par défaut
    Peut-être peux tu jeter un oeil à Eval::WithLexicals

    Je ne suis pas sûr de comprendre ce que tu veux faire mais ça risque d'être extrêmement compliqué à cause des différentes portées à considérer (dynamique, lexicale, fichier, package, globale) et des perturbations apportées par local...

  3. #3
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    En lisant la doc de caller (perldoc -f caller), on trouve se paragraphe :
    Furthermore, when called from within the DB package, caller
    returns more detailed information: it sets the list variable
    @DB::args to be the arguments with which the subroutine was
    invoked.
    Et dans la doc de DB, on trouve la variable globale :
    @DB::args
    Contains the arguments of current subroutine, or the @ARGV
    array if in the toplevel context.
    Ca me parait répondre à la question.

  4. #4
    Membre averti Avatar de dca_marshall
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Par défaut
    Bonjour,

    D'abord merci de vos réponses.

    @cmcmc:
    Je ne connaissais pas ce module, je regarde ça ce WE.

    @Philou67430:
    Le truc du @DB::args, j'utilise déjà le même principe pour passer les arguments qui sont référencés entre appelante et appelée.
    En fait je passe un Anonymous Hash et récupère sa référence dans @_.


    Pour aller un peu plus loin dans l'explication.

    Soit fonction appelante F1 et fonction appelée F2.

    F1 passe 4 ou 5 paramètres à F2 par un hash anonyme. Qui est bien récupéré par F2.

    Quand F2 fait son boulot, elle peu détecter des erreurs venant du mauvais paramètrage de F1.

    La majorité de ces erreurs sont reconnues F2. Mais les traitements de corrections sont très complexes et se trouve dans d'autres fonctions déjà utilisées.

    Donc je voudrai, dans F2, prendre les variables du contexte de F1, les reformater et les passer à une multitude de fonctions (via un autre Hash), pour actions particulières.
    Seules ces fonction sont à même de "réparée" la situation.

    Et pour contribuer à la complexité, les noms fonctions tierces, sont dans un fichier XML de paramètres.
    Dans le style IncidentType="IC1" WorkAround="F3".

    Ceci revient à faire un Scheduler sur événement...

    J'espère être clair dans l'énoncé.

    Je vais quand même explorer vos recommandations. Je suis surement tombé dans des habitudes de dev et j'ai de la peau de saucisson devant les yeux...



    Merci encore de votre contribution.

  5. #5
    Membre chevronné Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Par défaut
    Citation Envoyé par dca_marshall Voir le message
    Donc je voudrai, dans F2, prendre les variables du contexte de F1, les reformater et les passer à une multitude de fonctions (via un autre Hash), pour actions particulières.
    Qu'est-ce que tu appelles les variables du contexte de F1 ? Les paramètres d'appel de F1 ? Les variables lexicales déclarées dans F1 ? Les variables du package de F1 ? etc...

  6. #6
    Membre averti Avatar de dca_marshall
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 46
    Par défaut
    Bonjour,

    Pardon de ne pas l'avoir préciser.

    Je souhaite obtenir les variables Lexicales.

    Les variables de Package ne me sont pas nécessaires (le les obtient par ailleurs).

    Les variables d'arguments de FA1 sont passées de F1 à F2 par une reférence de hash anonyme.

    Celles de Fxx à F1 sont elles aussi passées par une autre référence à un autre hash (qui est aussi forwardée à F2).

    Merci encore de ta contribution.

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

Discussions similaires

  1. Solution simple pour développer ou réutilise une fonction de recherche sur des BDs
    Par geforce dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 18/04/2010, 19h12
  2. Temps limite pour le passage d'une fonction
    Par AliHome dans le forum Windows Forms
    Réponses: 0
    Dernier message: 06/09/2009, 17h02
  3. Réponses: 2
    Dernier message: 25/06/2007, 11h38
  4. Problème pour la création d'une fonction
    Par jipé95 dans le forum C
    Réponses: 5
    Dernier message: 10/12/2006, 14h28
  5. Réponses: 3
    Dernier message: 14/04/2006, 19h36

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