Tying Hashes
A class implementing a tied hash should define eight
methods. TIEHASH constructs new objects.
FETCH and STORE access the
key/value pairs. EXISTS reports whether a key is
present in the hash, and DELETE removes a key along
with its associated value.[2] CLEAR empties the hash by deleting
all key/value pairs. FIRSTKEY and
NEXTKEY iterate over the key/value pairs when you
call keys, values, or
each. And as usual, if you want to perform
particular actions when the object is deallocated, you may define a
DESTROY method. (If this seems like a lot of
methods, you didn't read the last section on arrays attentively. In
any event, feel free to inherit the default methods from the standard
Tie::Hash module, redefining only the interesting
ones. Again, Tie::StdHash assumes the
implementation is also a hash.)
For example, suppose you want to create a hash where every time you assign a value to a key, instead of overwriting the previous contents, the new value is appended to an array of values. That way when you say:
$h{$k} = "one";
$h{$k} = "two";It really does:
push @{ $h{$k} }, "one";
push @{ $h{$k} }, "two";That's not a very complicated idea, so you should be able to use
a pretty simple module. Using Tie::StdHash as a
base class, it is. Here's a Tie::AppendHash that
does just that:
package Tie::AppendHash;
use Tie::Hash;
our @ISA = ("Tie::StdHash");
sub STORE {
my ($self, $key, $value) = @_;
push @{$self->{key}}, $value;
}
1;Hash-Tying Methods
Here's an example of an interesting ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access