bonjour,
si on considère la classe Perl my::app::subject::SomeClass.pm, comment appelle-t-on le chemin my::app::subject:: de la classe ?
Java appellerait ça "package" de la classe Someclass mais est-ce correct dans le jargon perl ?
Merci
bonjour,
si on considère la classe Perl my::app::subject::SomeClass.pm, comment appelle-t-on le chemin my::app::subject:: de la classe ?
Java appellerait ça "package" de la classe Someclass mais est-ce correct dans le jargon perl ?
Merci
Le package, en langage perl, est la classe elle-même (ici my::app::subject::SomeClass). C'est pour cela qu'on utilise le mot clé package en début de fichier :
Pour la partie my::app::subject::, je ne lui connais pas de nom. Un package perl définit en fait un "espace de nom". On pourrait donc dire que my::app::subject est un espace de nom... mais rien n'impose, quand on déclare my::app::subject::SomeClass que l'espace de nom my::app::subject existe réellement. Il est seulement nécessaire que le module SomeClass.pm soit situé dans une arborescence my/app/subject depuis l'une des racines définie pour les librairies perl.
Code : Sélectionner tout - Visualiser dans une fenêtre à part package my::app::subject::SomeClass;
C'est mon interprétation personnelle, qui je pense, reflète assez bien la philosophie de perl 5.
Merci !
Espace de noms me semble pas mal.
Je ne comprends pas bien ce que tu veux dire par mais rien n'impose, quand on déclare my::app::subject::SomeClass que l'espace de nom my::app::subject existe réellement..
Ce que je veux dire, c'est que le nommage d'un espace de nom est arbitraire, et que la seule cohérence à respecter concerne le chemin du module qui défini un tel espace de nom.
Si l'espace de nom est composé de my::app::subject::SomeClass, rien n'impose qu'il existe un package my::app::subject, de même qu'un package my::app ou même de my.
Le nom que je donne ici ressemble à celui des espaces de nommage en XML. Il me semble que la sémantique est également similaire.
Partager