OVH Cloud OVH Cloud

package $foo

12 réponses
Avatar
espie
- est-ce qu'il y a une facon de stocker un nom de package dans
une variable et de changer de portee avec package $foo, autrement
que dans un eval "string";

Je me vois bien manipuler directement ma table de symboles pour y
poser ce que je veux, mais je prefererais pouvoir passer dans
un package directement.

L'application, en fait, ca serait d'avoir un fichier contenant quelques
methodes, et de pouvoir l'envelopper dans un package anonyme, a coups
de use Symbol;
L'acces se ferait alors a travers un objet cree dans le package.

2 réponses

1 2
Avatar
Paul Gaborit
À (at) Tue, 24 Aug 2004 22:56:23 +0000 (UTC),
(Marc Espie) écrivait (wrote):
en fait, ce qui me turlupine toujours autant, c'est pourquoi une
construction comme
package $foo;
ne fonctionne pas.


Cette limitation est fortement liée fait que, comme 'use', 'package' n'a de
sens qu'au moment de la compilation.

Et, en general, pourquoi tant de restrictions sur les noms de packages et
la facon de les employer en perl.


Certaines limites sont là pour garantir un conversion correcte entre nom de
package (en fait de module) et nom de fichier (sur toutes les
plateformes). Mais rien n'empêche de passer outre si on accède soi-même à la
table des symboles.

Compare au reste du langage, qui est d'une grande souplesse, c'est assez
surprenant. Et ca me surprend d'autant plus que mes desiderata ne me
paraissent pas si compliques: on a des closure et des anonymous sub. Ce que
je veux n'est jamais qu'une ou l'autre facon d'etendre ca pour pouvoir
ecrire des anonymous class tranquille dans son coin.


C'est vrai. Mais je pense tout de même que, en mélengeant un peu tous les
mécanismes évoqués dans cette enfilade, vous devriez pouvoir trouver votre
bonheur.

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
espie
In article ,
Paul Gaborit <Paul.Gaborit+ wrote:
C'est vrai. Mais je pense tout de même que, en mélengeant un peu tous les
mécanismes évoqués dans cette enfilade, vous devriez pouvoir trouver votre
bonheur.


Oui, un grand merci a tout le monde d'ailleurs.

Plus precisement, je n'ai pas encore decide exactement de ce que j'ai
fait, mais vos messages me confirment qu'il n'y a pas exactement la
solution que j'aurais voulu dans perl, et me donnent quelques pistes
interessantes a explorer en plus de celles que j'avais deja...

plus qu'a ressortir le carton a design et se remettre au boulot.

1 2