Au sein d'un script, j'ai besoin de tester l'existence d'une méthode
d'un objet.
J'essaye avec exists() mais quelles que soient mes tentatives, j'ai
toujours:
exists argument is not a subroutine name at lib/GA/DBI.pm line 35.
Est-il possible de simplement faire ce test ?
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
espie
In article <hd94j6$1hd$, CrazyCat wrote:
Bonjour,
Au sein d'un script, j'ai besoin de tester l'existence d'une méthode d'un objet. J'essaye avec exists() mais quelles que soient mes tentatives, j'ai toujours: exists argument is not a subroutine name at lib/GA/DBI.pm line 35.
Est-il possible de simplement faire ce test ?
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour savoir si la methode est possible.
Si c'est pour faire de la delegation et creer des methodes au vol, c'est plutot du ressort de la classe, et en general, suffit de definir AUTOLOAD pour faire ce qu'on veut (attention a gerer le cas particulier du destructeur).
In article <hd94j6$1hd$1@aioe.org>, CrazyCat <crazycat@c-p-f.org> wrote:
Bonjour,
Au sein d'un script, j'ai besoin de tester l'existence d'une méthode
d'un objet.
J'essaye avec exists() mais quelles que soient mes tentatives, j'ai
toujours:
exists argument is not a subroutine name at lib/GA/DBI.pm line 35.
Est-il possible de simplement faire ce test ?
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour
savoir si la methode est possible.
Si c'est pour faire de la delegation et creer des methodes au vol,
c'est plutot du ressort de la classe, et en general, suffit de
definir AUTOLOAD pour faire ce qu'on veut (attention a gerer
le cas particulier du destructeur).
Au sein d'un script, j'ai besoin de tester l'existence d'une méthode d'un objet. J'essaye avec exists() mais quelles que soient mes tentatives, j'ai toujours: exists argument is not a subroutine name at lib/GA/DBI.pm line 35.
Est-il possible de simplement faire ce test ?
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour savoir si la methode est possible.
Si c'est pour faire de la delegation et creer des methodes au vol, c'est plutot du ressort de la classe, et en general, suffit de definir AUTOLOAD pour faire ce qu'on veut (attention a gerer le cas particulier du destructeur).
CrazyCat
Marc Espie wrote:
Au sein d'un script, j'ai besoin de tester l'existence d'une méthode d'un objet. J'essaye avec exists() mais quelles que soient mes tentatives, j'ai toujours: exists argument is not a subroutine name at lib/GA/DBI.pm line 35.
Est-il possible de simplement faire ce test ?
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour savoir si la methode est possible.
Je vous prierais de ne pas m'insulter en des termes qui me sont incconus :D
Plus sérieusement, comment cela fonctionne-t-il ?
J'ai essayé: if (can(OBJ->method)) et if (can(method)) Le premier passe la compilation mais pas l'exécution, le second me dit "Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Si c'est pour faire de la delegation et creer des methodes au vol, c'est plutot du ressort de la classe, et en general, suffit de definir AUTOLOAD pour faire ce qu'on veut (attention a gerer le cas particulier du destructeur).
Non, il s'agit juste de déterminer si je suis dans un contexte ou un autre, afin de gérer des fonctionnements différents.
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces : http://www.g33k-zone.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Marc Espie wrote:
Au sein d'un script, j'ai besoin de tester l'existence d'une méthode
d'un objet.
J'essaye avec exists() mais quelles que soient mes tentatives, j'ai
toujours:
exists argument is not a subroutine name at lib/GA/DBI.pm line 35.
Est-il possible de simplement faire ce test ?
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour
savoir si la methode est possible.
Je vous prierais de ne pas m'insulter en des termes qui me sont incconus :D
Plus sérieusement, comment cela fonctionne-t-il ?
J'ai essayé:
if (can(OBJ->method)) et if (can(method))
Le premier passe la compilation mais pas l'exécution, le second me dit
"Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Si c'est pour faire de la delegation et creer des methodes au vol,
c'est plutot du ressort de la classe, et en general, suffit de
definir AUTOLOAD pour faire ce qu'on veut (attention a gerer
le cas particulier du destructeur).
Non, il s'agit juste de déterminer si je suis dans un contexte ou un
autre, afin de gérer des fonctionnements différents.
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Au sein d'un script, j'ai besoin de tester l'existence d'une méthode d'un objet. J'essaye avec exists() mais quelles que soient mes tentatives, j'ai toujours: exists argument is not a subroutine name at lib/GA/DBI.pm line 35.
Est-il possible de simplement faire ce test ?
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour savoir si la methode est possible.
Je vous prierais de ne pas m'insulter en des termes qui me sont incconus :D
Plus sérieusement, comment cela fonctionne-t-il ?
J'ai essayé: if (can(OBJ->method)) et if (can(method)) Le premier passe la compilation mais pas l'exécution, le second me dit "Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Si c'est pour faire de la delegation et creer des methodes au vol, c'est plutot du ressort de la classe, et en general, suffit de definir AUTOLOAD pour faire ce qu'on veut (attention a gerer le cas particulier du destructeur).
Non, il s'agit juste de déterminer si je suis dans un contexte ou un autre, afin de gérer des fonctionnements différents.
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces : http://www.g33k-zone.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
CrazyCat
CrazyCat wrote:
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour savoir si la methode est possible.
J'ai essayé: if (can(OBJ->method)) et if (can(method)) Le premier passe la compilation mais pas l'exécution, le second me dit "Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Je me réponds à moi même: Avec OBJ->can('method') cela semble passer, est-ce correct ?
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces : http://www.g33k-zone.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
CrazyCat wrote:
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour
savoir si la methode est possible.
J'ai essayé:
if (can(OBJ->method)) et if (can(method))
Le premier passe la compilation mais pas l'exécution, le second me dit
"Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Je me réponds à moi même:
Avec OBJ->can('method') cela semble passer, est-ce correct ?
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour savoir si la methode est possible.
J'ai essayé: if (can(OBJ->method)) et if (can(method)) Le premier passe la compilation mais pas l'exécution, le second me dit "Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Je me réponds à moi même: Avec OBJ->can('method') cela semble passer, est-ce correct ?
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces : http://www.g33k-zone.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
espie
In article <hd97fp$55i$, CrazyCat wrote:
CrazyCat wrote:
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour savoir si la methode est possible.
J'ai essayé: if (can(OBJ->method)) et if (can(method)) Le premier passe la compilation mais pas l'exécution, le second me dit "Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Je me réponds à moi même: Avec OBJ->can('method') cela semble passer, est-ce correct ?
Ben oui. Comme je le disais, tout le monde herite de UNIVERSAL, donc suffit d'appeler la methode can, qui existe toujours...
Accessoirement, comme toujours en perl, UNIVERSAL est documente, donc dans le pire des cas, tu peux verifer sur la doc. Je me contentais de donner un pointeur sur une info qui est facilement disponible (sachant qu'il n'est pas forcement simple d'intuiter l'existence d'UNIVERSAL et d'UNIVERSAL::can si on n'est pas au courant, mais qu'une fois qu'on sait, c'est censement trivial).
Si ces trucs te posent des soucis, je ne saurais trop de conseiller de lire ou relire perlboot, perltoot, et perltooc.
In article <hd97fp$55i$1@aioe.org>, CrazyCat <crazycat@c-p-f.org> wrote:
CrazyCat wrote:
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour
savoir si la methode est possible.
J'ai essayé:
if (can(OBJ->method)) et if (can(method))
Le premier passe la compilation mais pas l'exécution, le second me dit
"Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Je me réponds à moi même:
Avec OBJ->can('method') cela semble passer, est-ce correct ?
Ben oui. Comme je le disais, tout le monde herite de UNIVERSAL, donc suffit
d'appeler la methode can, qui existe toujours...
Accessoirement, comme toujours en perl, UNIVERSAL est documente, donc dans
le pire des cas, tu peux verifer sur la doc. Je me contentais de donner un
pointeur sur une info qui est facilement disponible (sachant qu'il n'est
pas forcement simple d'intuiter l'existence d'UNIVERSAL et d'UNIVERSAL::can
si on n'est pas au courant, mais qu'une fois qu'on sait, c'est censement
trivial).
Si ces trucs te posent des soucis, je ne saurais trop
de conseiller de lire ou relire perlboot, perltoot, et perltooc.
Tous les objets heritent de UNIVERSAL, suffit de faire un can() pour savoir si la methode est possible.
J'ai essayé: if (can(OBJ->method)) et if (can(method)) Le premier passe la compilation mais pas l'exécution, le second me dit "Bareword "method" not allowed while "strict subs" in use" Oublierais-je
Je me réponds à moi même: Avec OBJ->can('method') cela semble passer, est-ce correct ?
Ben oui. Comme je le disais, tout le monde herite de UNIVERSAL, donc suffit d'appeler la methode can, qui existe toujours...
Accessoirement, comme toujours en perl, UNIVERSAL est documente, donc dans le pire des cas, tu peux verifer sur la doc. Je me contentais de donner un pointeur sur une info qui est facilement disponible (sachant qu'il n'est pas forcement simple d'intuiter l'existence d'UNIVERSAL et d'UNIVERSAL::can si on n'est pas au courant, mais qu'une fois qu'on sait, c'est censement trivial).
Si ces trucs te posent des soucis, je ne saurais trop de conseiller de lire ou relire perlboot, perltoot, et perltooc.
CrazyCat
Marc Espie wrote:
Si ces trucs te posent des soucis, je ne saurais trop de conseiller de lire ou relire perlboot, perltoot, et perltooc.
Merci de ces bons conseils. A force de passer d'un langage à l'autre, je m'y perds un peu et les bonnes habitudes sont dures à reprendre, mais elles reviennent.
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces : http://www.g33k-zone.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Marc Espie wrote:
Si ces trucs te posent des soucis, je ne saurais trop
de conseiller de lire ou relire perlboot, perltoot, et perltooc.
Merci de ces bons conseils. A force de passer d'un langage à l'autre, je
m'y perds un peu et les bonnes habitudes sont dures à reprendre, mais
elles reviennent.
--
Réseau IRC Francophone: http://www.zeolia.net
Aide et astuces : http://www.g33k-zone.org
Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr
Si ces trucs te posent des soucis, je ne saurais trop de conseiller de lire ou relire perlboot, perltoot, et perltooc.
Merci de ces bons conseils. A force de passer d'un langage à l'autre, je m'y perds un peu et les bonnes habitudes sont dures à reprendre, mais elles reviennent.
-- Réseau IRC Francophone: http://www.zeolia.net Aide et astuces : http://www.g33k-zone.org Communauté Francophone sur les Eggdrops: http://www.eggdrop.fr