X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fp5-File-KDBX;a=blobdiff_plain;f=lib%2FFile%2FKDBX%2FError.pm;h=fbc6bbd35d7b911db42c705a4e1bf1808da059e7;hp=f80155796f4ae40e8d17afcda9dd8b0c8bdfce39;hb=dbb5bfee033ceb2600d5017d370b9533f6e6d6f7;hpb=f63182fc62b25269b1c38588dca2b3535ed1a1a2 diff --git a/lib/File/KDBX/Error.pm b/lib/File/KDBX/Error.pm index f801557..fbc6bbd 100644 --- a/lib/File/KDBX/Error.pm +++ b/lib/File/KDBX/Error.pm @@ -15,7 +15,12 @@ our @EXPORT = qw(alert error throw); my $WARNINGS_CATEGORY; BEGIN { $WARNINGS_CATEGORY = 'File::KDBX'; - warnings::register_categories($WARNINGS_CATEGORY) if warnings->can('register_categories'); + if (warnings->can('register_categories')) { + warnings::register_categories($WARNINGS_CATEGORY); + } + else { + eval qq{package $WARNINGS_CATEGORY; use warnings::register; 1}; ## no critic ProhibitStringyEval + } } use overload '""' => 'to_string', cmp => '_cmp'; @@ -78,10 +83,11 @@ as a B. Example: =cut sub error { + my $class = @_ && $_[0] eq __PACKAGE__ ? shift : undef; my $self = (blessed($_[0]) && $_[0]->isa('File::KDBX::Error')) ? shift - : (@_ && $_[0] eq __PACKAGE__) - ? shift->new(@_) + : $class + ? $class->new(@_) : __PACKAGE__->new(@_); return $self; }