Bitcoin-Crypto
view release on metacpan or search on metacpan
lib/Bitcoin/Crypto/Secret.pm view on Meta::CPAN
package Bitcoin::Crypto::Secret;
$Bitcoin::Crypto::Secret::VERSION = '4.005';
use v5.14;
use warnings;
use Scalar::Util qw(refaddr);
use namespace::autoclean;
use overload
q{""} => "as_string",
fallback => 1;
my %secrets;
my $store_secret = sub {
my ($obj, $secret) = @_;
$secrets{$obj} = $secret;
return;
};
my $retrieve_secret = sub {
my ($obj) = @_;
return undef unless exists $secrets{$obj};
return $secrets{$obj};
};
my $delete_secret = sub {
my ($obj) = @_;
delete $secrets{$obj};
return;
};
sub new
{
my ($class, $secret) = @_;
my $str = '[REDACTED]';
my $self = bless \$str, $class;
$store_secret->(refaddr $self, $secret);
return $self;
}
sub unmask_to
{
my ($self, $sub_ref) = @_;
return $sub_ref->($retrieve_secret->(refaddr $self));
}
sub DESTROY
{
my ($self) = @_;
$delete_secret->(refaddr $self);
}
sub as_string
{
return ${$_[0]};
}
1;
__END__
( run in 0.890 second using v1.01-cache-2.11-cpan-39bf76dae61 )