Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re^3: About inheritence ? and Autoload ?

by kyle (Abbot)
on Nov 25, 2009 at 13:24 UTC ( #809335=note: print w/replies, xml ) Need Help??

in reply to Re^2: About inheritence ? and Autoload ?
in thread About inheritence ? and Autoload ?

If you want to use the current package as the base name of some other package, you could do something like this:

my $subpackage = __PACKAGE__ . '::Command'; my $test_command = $subpackage->new(@ARGV);

You could also make a module that installs this behavior into every package. Here's a demonstration:

sub UNIVERSAL::subpackage { join '::', @_ } package Foo::Command; sub wow { print "I am: ", __PACKAGE__, "\n" } package Foo; sub check { __PACKAGE__->subpackage( 'Command' )->wow() } package main; Foo->check(); __END__ I am: Foo::Command

In Real Code, you'd put the sub UNIVERSAL::subpackage part into another module which you then use from every package that you want to have that behavior. While "__PACKAGE__->method( 'Blah' )" is a lot longer than just "Blah", it also carries a bit more meaning.

Is that closer to what you want?

Replies are listed 'Best First'.
Re^4: About inheritence ? and Autoload ?
by lepetitalbert (Abbot) on Nov 25, 2009 at 16:36 UTC

    Hi again,

    pajout, I think I was (am) confused about namespace and inheritance. Thanks for your precisions,

    kyle, that's definitivly exactly what I was lookin for \o/

    Thank you all.

    Have a nice day.

    "There is only one good, namely knowledge, and only one evil, namely ignorance." Socrates

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://809335]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2021-07-29 06:39 GMT
Find Nodes?
    Voting Booth?

    No recent polls found