X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/a272bf38fe56bc079165353355df3e49dd73afeb..731623ab9836b248099b9e1d42872547270dd8ea:/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm diff --git a/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm b/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm index 810edbc..255dab0 100644 --- a/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm +++ b/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm @@ -3,7 +3,7 @@ package Module::CoreList::TieHashDelta; use strict; use vars qw($VERSION); -$VERSION = "2.70"; +$VERSION = '5.20150320'; sub TIEHASH { my ($class, $changed, $removed, $parent) = @_; @@ -32,12 +32,14 @@ sub FETCH { sub EXISTS { my ($self, $key) = @_; + restart: if (exists $self->{changed}{$key}) { return 1; } elsif (exists $self->{removed}{$key}) { return ''; } elsif (defined $self->{parent}) { - return exists $self->{parent}{$key}; + $self = tied %{$self->{parent}}; #avoid extreme magic/tie recursion + goto restart; } return ''; } @@ -68,7 +70,7 @@ sub FIRSTKEY { sub NEXTKEY { my ($self) = @_; - each $self->{changed}; + each %{$self->{changed}}; } 1;