Tie-EncryptedHash
view release on metacpan or search on metacpan
lib/Tie/EncryptedHash.pm view on Meta::CPAN
my $class = ref($_[0]) || $_[0];
my $self = bless {}, $class;
$self->{__password} = $_[1] if $_[1];
$self->{__cipher} = $_[2] || qq{Blowfish};
return $self;
}
sub FETCH # ($self, $key)
{
my ($self, $key) = @_;
my $entry = _access($self,$key,(caller)[0..1]);
return $entry if $entry;
}
sub STORE # ($self, $key, $value)
{
my ($self, $key, $value) = @_;
my $entry = _access($self,$key,(caller)[0..1],$value);
return $entry if $entry;
}
sub DELETE # ($self, $key)
{
my ($self, $key) = @_;
return _access($self,$key,(caller)[0..1],'',1);
}
sub CLEAR # ($self)
{
my ($self) = @_;
return undef if grep { ! $self->verify($_) }
grep { ! /__/ } CORE::keys %{$self};
%{$self} = ();
}
sub EXISTS # ($self, $key)
{
my ($self, $key) = @_;
my @context = (caller)[0..1];
return _access($self,$key,@context) ? 1 : '';
}
sub FIRSTKEY # ($self)
{
my ($self) = @_;
CORE::keys %{$self};
goto &NEXTKEY;
}
sub NEXTKEY # ($self)
{
my $self = $_[0]; my $key;
my @context = (caller)[0..1];
while (defined($key = CORE::each %{$self})) {
last if eval { _access($self,$key,@context) }
}
return $key;
}
sub DESTROY # ($self)
{
}
( run in 0.273 second using v1.01-cache-2.11-cpan-1e74a51a04c )