$file =~ s/(?<!\\)((\\\\)*)"/$1\\"/g;
my @errs;
+ my $hook = sub { push @errs, [ @_ ] };
+
my $wrapper = <<" WRAPPER";
- {
return;
package main;
- no indirect 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");
}
}