Wed Jul 29 08:44:36 2015: Request 106144 was acted upon. Transaction: Ticket created by SLAFFAN Queue: Module-ScanDeps Subject: [Patch] Preload dependencies for File::BOM Broken in: (no value) Severity: (no value) Owner: Nobody Requestors: slaf...@cpan.org Status: new Ticket <URL: https://rt.cpan.org/Ticket/Display.html?id=106144 >
Dependency scanning when File::BOM is used in a via construct misses several dependencies, resulting in errors when calling PAR packed executables. This particularly applies to CJK locales. The attached patch adds a preload section to include them. It could perhaps also load Encode::HanExtra and Encode::JIS2K, but I have not done so in this version. The patch was tested using the code below. The file open is needed to trigger the loading of the extra modules under "pp -x". A more general solution might be to scan for "open .+?'<:via(\w+)'" constructs. Regards, Shawn. use File::BOM; open my $fh, '<:via(File::BOM)', $0 # just read ourselves or die "Cannot open own code via File::BOM\n"; $fh->close;
Index: lib/Module/ScanDeps.pm =================================================================== --- lib/Module/ScanDeps.pm (revision 1595) +++ lib/Module/ScanDeps.pm (working copy) @@ -331,6 +331,16 @@ grep /\bMM_/, _glob_in_inc('ExtUtils', 1); }, 'File/Basename.pm' => [qw( re.pm )], + 'File/BOM.pm' => [ + qw ( + Encode/Unicode.pm + PerlIO/via.pm + Encode/CN.pm + Encode/JP.pm + Encode/KR.pm + Encode/TW.pm + ) # load extra Encode pages just in case - should probably also do the extended ones + ], 'File/HomeDir.pm' => 'sub', 'File/Spec.pm' => sub { require File::Spec;