The attached script cannot be run in the src/pmc/ directory, because
it adds "." to @INC, and then does "use Parrot::Distribution;" which
eventually (via lib/Pod/Simple.pm) does "use integer;".  This confuses
Perl horribly, because it picks up "./integer.pmc" instead of the
built-in pragma, since (as we all know) ".pmc" is Perl5-speak for
"compiled Perl module" (even though such things do not really exist),
and "use lib" puts "." ahead of the build-in libraries.  Boom.

   Lest anyone conclude that this is totally academic, I noticed this
while testing the Emacs interface to the check-coding-stds.pl script,
which attempts to run coding standards tests with the same working
directory as that of the source file.  So for src/pmc/multisub.pmc, it
tries something equivalent to this:

        cd src/pmc
        perl ../../t/codingstd/fixme.t multisub.pmc

which fails in just this bizarre manner because it does

        use lib qw( . lib ../lib ../../lib );

and then uses Parrot::Distribution, which gets us to the "use integer"
problem.

   So, is this worth fixing?  Presumably, dropping the "." should be
sufficient.  WDOT?

                                        -- Bob Rogers
                                           http://rgrjr.dyndns.org/

#! perl

use lib qw(. ../../lib );
use Parrot::Distribution;

print "Win.\n";

Reply via email to