File-KeePass-KDBX
view release on metacpan or search on metacpan
lib/File/KeePass/KDBX.pm view on Meta::CPAN
use strict;
use Crypt::PRNG qw(irand);
use Crypt::Misc 0.029 qw(decode_b64 encode_b64);
use File::KDBX 0.900;
use File::KDBX::Constants qw(:header :magic :version);
use File::KDBX::Loader::KDB;
use File::KDBX::Util qw(clone_nomagic generate_uuid load_optional);
use Hash::Util::FieldHash qw(fieldhashes);
use Module::Load;
use Scalar::Util qw(blessed looks_like_number weaken);
use boolean;
use namespace::clean;
our $VERSION = '0.902'; # VERSION
fieldhashes \my (%KDBX, %TIED);
BEGIN {
our @ISA;
@ISA = qw(File::KeePass) if $INC{'File/KeePass.pm'};
lib/File/KeePass/KDBX.pm view on Meta::CPAN
my $cache = $TIED{$self} //= {};
$class = __PACKAGE__."::Tie::$class" if $class !~ s/^\+//;
my $key = "$class:" . Hash::Util::FieldHash::id($obj);
my $hit = $cache->{$key};
return $hit if defined $hit;
load $class;
tie((ref $ref eq 'ARRAY' ? @$ref : %$ref), $class, $obj, @_, $self);
$hit = $cache->{$key} = $ref;
weaken $cache->{$key};
return $hit;
}
### convert datetime from KDBX to KeePass format
sub _decode_datetime {
local $_ = shift or return;
return $_->strftime('%Y-%m-%d %H:%M:%S');
}
### convert datetime from KeePass to KDBX format
( run in 0.281 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )