[Melbourne-pm] Hash Containing Array
Daniel Pittman
daniel at rimspace.net
Sat Mar 21 19:12:21 PDT 2009
Gerd Berner <gberner at intraspect.com.au> writes:
> I'm having a few problems with some basic object oriented methods.
Mostly, casting and referencing of data structures; the same issue would
happen in a non-OO program.
> My constructor and set method works fine, but I'm struggling to read
> the keys back from the object once it is created. My methods are
> attached below along with a screen dump of the created object. Any
> help would be greatly appreciated.
>
> sub new {
[...]
> $self->{_ACC_VIA_RULE}= {};
Here you correctly set _ACC_VIA_RULE to a HASHREF.
[...]
> sub set_acc_via_rule
[...]
> unshift @{$self->{_ACC_VIA_RULE}{$key}},$val;
You want '$self->{_ACC_VIA_RULE}->{$key}'
Notice the extra '->' dereference? That is there because a hash value
is a scalar, which means you can only store a HASHREF, not a HASH in it.
[...]
> sub get_back_keys
[...]
> while (my ($key,$value) = each ($self->{_ACC_VIA_RULE}))
Here you want:
%{ $self->{_ACC_VIA_RULE} }
Notice the cast to a HASH? That is needed to turn the HASHREF back into
a normal HASH, which each can operate on.
Regards,
Daniel
More information about the Melbourne-pm
mailing list