Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3010 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Voir tout ce qui est importé dans l'espace de nom courant?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Voir tout ce qui est importé dans l'espace de nom courant?

n°1234786
Yoyo@
Posté le 31-10-2005 à 10:24:38  profilanswer
 

Salut,
 
Tout est dans le titre.
 
Je voudrais savoir s'ile xiste sous Perl un moyen de voir tous les symboles qui sont importés dans l'espace de nom courant.
 
Par exemple, si je fais un
 

Code :
  1. package Mypack;
  2. use HTML::Entities;


 
J'aimerais trouver un moyen de savoir quels sont les noms qui sont effectivement importés et à quoi ils réfèrent...
 
Merci
 
 

mood
Publicité
Posté le 31-10-2005 à 10:24:38  profilanswer
 

n°1237282
pospos
Posté le 03-11-2005 à 11:37:34  profilanswer
 

normalement tout est dis dans le pod du module (perldoc HTML::Entities ou la doc HTML sur search.cpan.org).
 
Si tu ne veux rien importer tu peux faire ca:
use HTML::Entities ();
 
ou indiquer explicitement entre parenthese ce que tu veux importer.
 
Dans le cas de HTML::Entities il me semble qu'il explorte deux fonction par defaut pour encoder et decoder
 
sinon pour voir les symboles il y a une table de hash special mais il vaut mieux eviter ce genre de bidouille

n°1237295
Yoyo@
Posté le 03-11-2005 à 11:43:34  profilanswer
 

Merci pour ta réponse.
 
Oui, oui, je sais bien, a priori, comment marche un Use.
 
Mais si je pose la question, c'est parce que des fois, j'ai l'impression que ça marche mal. Ou alors je fais une mauvaise manip.
 
Par exemple, voici l'un de mes modules:
 

Code :
  1. package MyUtils::MyUtil;
  2. use Exporter qw(import);
  3. @EXPORT = qw(showArgs showAutoLoad);
  4. sub showArgs{...}


 
Et après, lorsque je fais dans un Page Web un appel du genre:
 

Code :
  1. <%Perl>
  2. use MyUtils::MyUtil;
  3. showArgs(1, "Hello.html" );
  4. </%Perl>


 
Il me dit qu'il ne peut pas trouver Mason::Commands::showArgs (j'utilise Mason au dessus de mod_Perl, mais peut importe je pense dans le cas présent)
 
Par contre, si je fais un

Code :
  1. MyUtils::MyUtil::showArgs

ça marche parfaitement... C'est bizarre, non?
 
D'autre part, je sais que dans le perldoc, il est indiqué tout ce qui est exporté, mais ça ne reste que des docs, et des fois, j'utilise peut être une mauvaise version d'un composant, donc, je préfère savoir en temps réels, juste pour des tests, ce qui est importé...

n°1237463
pospos
Posté le 03-11-2005 à 13:57:32  profilanswer
 

le Exporter il vaut mieux l'utiliser comme base qu'importer le import:
use base "Exporter";
 
pour le coup de Mason tu a essayé de faire la meme chose dans un script? Pasque effectivement ca peut avoir une consequence vu que le code n'est pas executé de la meme facon (eval)

n°1237474
Yoyo@
Posté le 03-11-2005 à 14:03:15  profilanswer
 

Bah écoute, en fait, le truc, c'est que des fois, ça marche, des fois ça marche pas...
 
Je ne sais aps si tu connais un peu Mason (mais je pense que oui ;) ), mais par exemple, quand je fais un
$r->$s->server_admin, des fois ça marche, et des fois, il me dit qu'il ne peut pas exécuter la méthode server_admin pour Apache2::RequestRec... Ca doit dépendre de ce qu'il y dans l'espace de nom je suppose...  
Bref, c'est pour ça que je cherchais un moyen d'avoir accès à tout ce qui est importé, en temps réel, pour faire des tests lorsque ça ne marche pas... (un genre de "debug" avec une sortie dans un fichier annexe) Car c'est vrai qu'avec cette surcouhe "Mason", je suis un petit peu perdu (déja que je suis nouveau sur Perl - mais je maîtrise déjà pas mal le langage) et sur mod_Perl (j'essaie de me dépatouiller en comprenant quand est ce qu'un nouveau Child est créé, comment marche la mise en mémoire des variables selon qu'il y ait un BEGIN ou non, etc...)
 
Tu me parlais plus haut d'un hash... Tu as son nom?

n°1237536
pospos
Posté le 03-11-2005 à 14:31:44  profilanswer
 

Je ne connait pas Mason, désolé (je ne fais pas de developpement web).
 
Pour la fameuse hash c'est simplement le nom du module suivit de ::
 
exemple pour el package main (le package principale de ton programme) :
 
use Data::Dumper;
print Dumper \%main::;

n°1237545
Yoyo@
Posté le 03-11-2005 à 14:34:48  profilanswer
 

D'accord!
 
Je vais tester ça :)
 
Pour Mason, désolé, tu donnais l'impression de connaître, vu que tu savais que c'était exécuté dans un eval :D
 
Par contre, Perl, tu connais bien? Et tu utilises pour autre chose que du Web?

n°1237582
pospos
Posté le 03-11-2005 à 14:55:44  profilanswer
 

ouai je l'utilise pour faire des appli


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Voir tout ce qui est importé dans l'espace de nom courant?

 

Sujets relatifs
[perl dédié linux putty]lancer perl en tâche de fondmac os X, perl et modules
afficher la derniere entrée peu importe la table ?![perl] gestion de fichiers de configuration
Trouver le répertoire courantperl et windows : gestion des ressources
[Question simple HTML] plus d'espace entre les imagesPerl : Passer une structure..
[perl] matcher sur plusieurs lignes avec <>compilation 'statique' d'un script perl pour windows
Plus de sujets relatifs à : [Perl] Voir tout ce qui est importé dans l'espace de nom courant?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR