1 #--------------------------#
2 package PLP::Tie::Delay;
3 #--------------------------#
9 Delays hash generation. Unties the hash on first access, and replaces it by the generated one.
10 Uses symbolic references, because circular ties make Perl go nuts :)
12 tie %Some::hash, 'PLP::Tie::Delay', 'Some::hash', sub { \%generated_hash };
19 %{$self->[0]} = %{ $self->[1]->() };
23 my ($class, $hash, $source) = @_;
24 return bless [$hash, $source], $class;
28 my ($self, $key) = @_;
30 return ${$self->[0]}{$key};
34 my ($self, $key, $value) = @_;
36 return ${$self->[0]}{$key} = $value;
40 my ($self, $key) = @_;
42 return delete ${$self->[0]}{key};
52 my ($self, $key) = @_;
54 return exists ${$self->[0]}{key};
60 return exists ${$self->[0]}{key};