Du kannst keinen bestehenden Hash tie'en, sondern musst immer eine Kopie nach dem tie machen.
Beispiel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use Tie::CPHash;
$foo = rectie({ bla => { foo => { bar => "a"} } });
warn $foo->{BLA}->{FOO}->{BAR};
sub rectie {
my($hashref) = @_;
while(my($k,$v) = each %$hashref) {
if (UNIVERSAL::isa($v, "HASH")) {
my $new_v = rectie($v);
$hashref->{$k} = $new_v;
}
}
tie my %newhash, "Tie::CPHash";
%newhash = %$hashref;
\%newhash;
}