Wed Nov 18 08:49:08 2015: Request 109110 was acted upon. Transaction: Ticket created by ralf.neuba...@wido.bv.aok.de Queue: PAR-Packer Subject: Incompatible with Module::ScanDeps 1.20 Broken in: (no value) Severity: (no value) Owner: Nobody Requestors: ralf.neuba...@wido.bv.aok.de Status: new Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=109110 >
Using pp results in: Can't use string ("1") as an ARRAY ref while "strict refs" in use at c:/strawberry-5.22.0.1-32/perl/site/lib/Module/ScanDeps.pm line 1085. This code in PAR-Packer-1.026: my $preload = Module::ScanDeps::_get_preload($module) or next; $add_deps->( used_by => $file, rv => \%map, modules => $preload, skip => \%skip, # warn_missing => $args->{warn_missing}, ); push @files, map {&$inc_find($_)} @$preload; is incompatible with the change in Module:ScanDeps between version 1.19 and 1.20: 1.19: sub _get_preload { my $pm = shift; my $preload = $Preload{$pm} or return(); if ($preload eq 'sub') { $pm =~ s/\.p[mh]$//i; $preload = [ _glob_in_inc($pm, 1) ]; } elsif (UNIVERSAL::isa($preload, 'CODE')) { $preload = [ $preload->($pm) ]; } return $preload; } 1.20: sub _get_preload { my ($pm, $seen) = @_; $seen ||= {}; $seen->{$pm}++; my @preload; foreach $pm (_get_preload1($pm)) { next if $seen->{$pm}; $seen->{$pm}++; push @preload, $pm, _get_preload($pm, $seen); } return @preload; } Changing the above code to my @preload = Module::ScanDeps::_get_preload($module) or next; $add_deps->( used_by => $file, rv => \%map, modules => \@preload, skip => \%skip, # warn_missing => $args->{warn_missing}, ); push @files, map {&$inc_find($_)} @preload; seems to help, but of course needs Module-ScanDeps-1.20 . Ralf