|
NAMEUNIVERSAL::which - tells fully qualified name of the methodVERSION$Id: which.pm,v 0.6 2007/05/15 16:01:20 dankogai Exp dankogai $SYNOPSISuse UNIVERSAL::which; use Some::Sub::Class; # which inherits lots of modules # .... my $o = Some::Sub::Class->new; # in scalar context my $fqn = $o->which("method"); # in list context my ($pkg, $name) = $o->which("method"); # as function my $fqn = UNIVERSAL::which('Some::Sub::Class', 'method'); DESCRIPTIONUNIVERSAL::which provides only one method, "which".As the name suggests, it returns the fully qualified name of a given method. Sometimes you want to know the true origin of a method but inheritance and AUTOLOAD gets in your way. This module does just that. t/*.t illustrates how UNIVERSAL::which behaves more in details. CAVEATConsider the code below;no warnings 'once'; package Foo; my $code = sub { 1 }; package Bar; *muge = $code; In this case, you get "undef" for "$fq = Bar>which('muge')" while "($pkg, $name) = Bar->which('muge')" is "('Foo', '__ANON__')". That way the code snippet works as expeted. my $fq = Bar->which('muge'); &$fg if $fg; if you get 'Bar::__ANON__' instead, perl will croak on you at the 2nd line. SEE ALSOperlobj, UNIVERSAL::canAUTOLOADAUTHORSDan Kogai, <dankogai at dan.co.jp> <http://search.cpan.org/~dankogai/>Original idea seeded by: TANIGUCHI <http://search.cpan.org/~taniguchi/> B::svref_2object trick by: HIO <http://search.cpan.org/~hio/> AUTOLOAD case suggested by: DAIBA <http://search.cpan.org/~daiba/> Anon. coderef bug noted by: MIYAZAKI <http://search.cpan.org/~miyazaki/> COPYRIGHT AND LICENSECopyright (C) 2006-2007 by Dan KogaiThis library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.
Visit the GSP FreeBSD Man Page Interface. |