Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: Object and tied hash all at once?

by btrott (Parson)
on Jul 07, 2001 at 00:54 UTC ( #94606=note: print w/replies, xml ) Need Help??


in reply to Object and tied hash all at once?

Yes, this is possible. Tie::SecureHash is an example of a class that does this.

In order to get the object and tied hash interface all at once, though, you have to be slightly tricky, and you need to create your object using the object constructor interface, not the tie interface:

sub new { my $class = shift; tie my %self, $class; bless \%self, $class; }
That returns a reference to the tied hash, which is also an object that is blessed into $class, which means that you can either use it as a tied hash, *or* call methods on it.

(NOTE: In the above example, the object is blessed into the tie class, but this is not required.)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://94606]
help
Chatterbox?
[stevieb]: I went on my merry way writing a cross-platform, network-aware system that works across Perlbrew and Berrybrew systems and runs unit tests for Perl dists on all installed versions, with the ability to manage *brew commands themselves
[stevieb]: That worked out exceptionally well, as when I started that project, I hadn't delved into hardware development yet.
[stevieb]: found a issue in MetaCPAN::Client though today for my revdep tests. At least I think it's an issue
[stevieb]: I'm working on hiding the fact the software needs MetaCPAN::Client, as I often have a hell of a time installing it. I'm going to change it to let the user know if they do revdep that it needs to be installed, and remove that distribution ..

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (4)
As of 2017-06-25 23:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How many monitors do you use while coding?















    Results (572 votes). Check out past polls.