Subject: | PerlIO.pm should imply PerlIO::scalar.pm |
Follow-up to the discussion started in
http://www.nntp.perl.org/group/perl.par/2556:
- perl 5.8.x loads PerlIO.pm "under the hood" for certain kinds
of open() calls (e.g. open with layers, open for reading from a string)
- when a script uses such an open() and it is packed by PAR,
then running it may result in "PerlIO.pm not found" (because
it wasn't detected by Module::Scandeps and hence not packed)
- PerlIO may load other modules, decided at runtime, hence not
inferrable by Module::ScanDeps
- special case when third argument to open() is (scalar) reference
(i.e. reading from a string), then PerlIO::scalar will be loaded;
this one is nasty since there will be no error reported in
perl <= 5.8.8 when loading PerlIO::scalar fails
- so if a packer tries to work around the "PerlIO.pm not found"
by explicitly adding PerlIO.pm, it may still fail because of
the missing PerlIO::scalar.pm, but this case without any useful
error message (the error will occur later, when trying to
read/write on the filehandle)
- so the least we should do, is silently add PerlIO::scalar
when we just added PerlIO
Subject: | scandeps.patch |
--- Module/ScanDeps.pm.orig 2006-10-25 18:01:08.000000000 +0200
+++ Module/ScanDeps.pm 2006-10-25 18:03:22.000000000 +0200
@@ -277,6 +277,7 @@
],
'Parse/AFP.pm' => 'sub',
'Parse/Binary.pm' => 'sub',
+ 'PerlIO.pm' => [qw( PerlIO/scalar.pm )],
'Regexp/Common.pm' => 'sub',
'SerialJunk.pm' => [ qw(
termios.ph asm/termios.ph sys/termiox.ph sys/termios.ph sys/ttycom.ph