Click here to get back home

FAQ 7.26 How can I find out my current package?

 HomeNewsGroups | Search | About
 comp.lang.perl.misc    Post an article   get this group's latest topics as an RSS feed add this group's latest topics to your My MSN content add this group's latest topics to your My Yahoo content
Subject Author Date
FAQ 7.26 How can I find out my current package? PerlFAQ Server 06-10-2008
Posted by PerlFAQ Server on June 10, 2008, 9:03 pm
Please log in for more thread options
This is an excerpt from the latest version perlfaq7.pod, which
comes with the standard Perl distribution. These postings aim to
reduce the number of repeated questions as well as allow the community
to review and update the answers. The latest version of the complete
perlfaq is at http://faq.perl.org .

--------------------------------------------------------------------

7.26: How can I find out my current package?

If you're just a random program, you can do this to find out what the
currently compiled package is:

my $packname = __PACKAGE__;

But, if you're a method and you want to print an error message that
includes the kind of object you were called on (which is not necessarily
the same as the one in which you were compiled):

sub amethod {
my $self = shift;
my $class = ref($self) || $self;
warn "called me from a $class object";
}



--------------------------------------------------------------------

The perlfaq-workers, a group of volunteers, maintain the perlfaq. They
are not necessarily experts in every domain where Perl might show up,
so please include as much information as possible and relevant in any
corrections. The perlfaq-workers also don't have access to every
operating system or platform, so please include relevant details for
corrections to examples that do not work on particular platforms.
Working code is greatly appreciated.

If you'd like to help maintain the perlfaq, see the details in
perlfaq.pod.

Posted by Michael Carman on June 10, 2008, 9:21 pm
Please log in for more thread options
> 7.26: How can I find out my current package?

The answer doesn't mention caller() but probably should.

If you're a subroutine and want to know the package you were called
from use the C<caller> function:

my $package = caller();

-mjc

Posted by Uri Guttman on June 10, 2008, 11:32 pm
Please log in for more thread options

>> 7.26: How can I find out my current package?
MC> The answer doesn't mention caller() but probably should.

MC> If you're a subroutine and want to know the package you were called
MC> from use the C<caller> function:

MC> my $package = caller();

the question is current package, not the called from
package. __PACKAGE__ is all that is needed.

uri

--
Uri Guttman ------ uri@stemsystems.com -------- http://www.sysarch.com --
----- Perl Code Review , Architecture, Development, Training, Support ------
--------- Free Perl Training --- http://perlhunter.com/college.html ---------
--------- Gourmet Hot Cocoa Mix ---- http://bestfriendscocoa.com ---------

Posted by Michael Carman on June 11, 2008, 10:50 am
Please log in for more thread options
Uri Guttman wrote:
>
> >> 7.26: How can I find out my current package?
> MC> The answer doesn't mention caller() but probably should.
>
> the question is current package, not the called from
> package. __PACKAGE__ is all that is needed.

Mentioning caller() here seems just as appropriate as the mention of
ref(). I can understand the subtleties of why you'd consider ref() to be
the current package but the people who need this FAQ answer won't.

I don't think a strict interpretation of this question (or FAQ questions
in general) is warranted. It's likely that people wanting the called
from package will search for "perldoc -q package" and they'll find...
nothing, because there's a seemingly innocuous qualifier in front of it.
From a searching point of view I read this question as "How can I find
[some words to make a proper sentence] package?" The word "current" is
incidental -- placed there at the whim of whomever first wrote this
entry -- not a crucial part of the question.

From a practical point of view there doesn't appear to be an FAQ entry
for the called from package. (Neither "perldoc -q package" nor "perldoc
-q call" find anything.) It would fit nicely here.

-mjc


Posted by Charlton Wilbur on June 11, 2008, 11:44 am
Please log in for more thread options

MC> From a practical point of view there doesn't appear to be an FAQ
MC> entry for the called from package. (Neither "perldoc -q package"
MC> nor "perldoc -q call" find anything.) It would fit nicely here.

I'm sure a patch would be welcome.

Charlton



--
Charlton Wilbur
cwilbur@chromatico.net

Similar ThreadsPosted
FAQ 7.25 How can I find out my current package? March 6, 2005, 6:03 am
FAQ 7.25 How can I find out my current package? May 25, 2005, 11:03 am
FAQ 7.25 How can I find out my current package? August 10, 2005, 4:03 pm
FAQ 7.25 How can I find out my current package? September 9, 2005, 4:03 pm
FAQ 7.25 How can I find out my current package? November 24, 2005, 5:03 am
FAQ 7.25 How can I find out my current package? December 21, 2005, 11:03 pm
FAQ 7.25 How can I find out my current package? January 3, 2006, 5:03 am
FAQ 7.25 How can I find out my current package? September 7, 2006, 9:03 am
FAQ 7.25 How can I find out my current package? March 8, 2007, 9:03 pm
FAQ 7.25 How can I find out my current package? August 2, 2007, 3:03 am

Our other projects:

Art Dolls, Fairies and Mermaids - Sunnyfaces.net

Roy's Linux, Programming and Search Engines messages

1-Script XML SitemapXML Sitemap