X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FPerl-Critic-Policy-Dynamic-NoIndirect.git;a=blobdiff_plain;f=lib%2FPerl%2FCritic%2FPolicy%2FDynamic%2FNoIndirect.pm;fp=lib%2FPerl%2FCritic%2FPolicy%2FDynamic%2FNoIndirect.pm;h=068ab88d1ff81018234934d13bea9d2f80c71c54;hp=3528d0b0718852e29f815a9dadf4b7f1f7781eb0;hb=6e8dbf3b02e4df3a7304b7acbe47037575fc952d;hpb=4421e107580f32a6c992f44d01b1d2818d65ee87 diff --git a/lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm b/lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm index 3528d0b..068ab88 100644 --- a/lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm +++ b/lib/Perl/Critic/Policy/Dynamic/NoIndirect.pm @@ -58,24 +58,25 @@ sub violates_dynamic { my @errs; my $wrapper = <<" WRAPPER"; - { return; package main; - no indirect hook => sub { push \@errs, [ \@_ ] }; - { - ; + my \$hook; + BEGIN { \$hook = sub { push \@errs, [ \@_ ] } } + no strict; + no warnings; + no indirect hook => \$hook; + do { #line 1 "$file" $src } - } WRAPPER { local ($@, *_); eval $wrapper; ## no critic - if ($@) { + if (my $err = $@) { require Carp; - Carp::confess("Couldn't compile the source wrapper: $@"); + Carp::croak("Couldn't compile the source wrapper: $err"); } }