]> Dogcows Code - chaz/p5-File-KDBX/blobdiff - lib/File/KDBX/Error.pm
Add a couple fixes for older perls
[chaz/p5-File-KDBX] / lib / File / KDBX / Error.pm
index f80155796f4ae40e8d17afcda9dd8b0c8bdfce39..fbc6bbd35d7b911db42c705a4e1bf1808da059e7 100644 (file)
@@ -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<File::KDBX::Error>. 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;
 }
This page took 0.027065 seconds and 4 git commands to generate.