Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: Variable Name Mistery. Who calls?

by gam3 (Curate)
on Oct 25, 2006 at 23:45 UTC ( #580675=note: print w/replies, xml ) Need Help??

in reply to Variable Name Mistery. Who calls?

If you take ikegami's idea one more step. You can enforce the variable name and save a little typing. However you get odd syntax.
{ package Foo; sub new { my ($class, $id) = @_; my $self = { id => $id }; my ($package) = caller; ${$callpkg."::".$id} = bless $self, $class; undef; } sub method { my ($self, $name) = @_; print $self->{id}, "\n"; } } Foo->new('one'); Foo->new('second'); $one->method; $second->method;
This does not have the same syntax, but does get you the same result with about the same number of words. And you get pretty good error detection.
-- gam3
A picture is worth a thousand words, but takes 200K.

Replies are listed 'Best First'.
Re^2: Variable Name Mistery. Who calls?
by Hofmator (Curate) on Oct 26, 2006 at 09:43 UTC
    The problem with your solution is that it is installing global package variables into the calling module (or main script). Normally - and also in ikegami's post - you use local my variables for objects!

    -- Hofmator

    Code written by Hofmator and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (1)
As of 2023-05-31 20:04 GMT
Find Nodes?
    Voting Booth?

    No recent polls found