Hello PARty,

I'm new to PAR and pp and am trying to use it to package a fairly large
application so that Windows users who don't have Perl installed can
simply double-click the application.  I've managed to overcome some
pitfalls (missing DLLs, dynamic loading of modules which Scandeps can't
find), but there's still one thing I don't understand, and Google didn't
point me into an explanation so far.

What I'm trying to achieve: The Perl application can be extended with a
plugin mechanism.  In plain Perl, this is done by dropping the modules
to special subdirectories, the application will pick them up. Now, I
want to let users do the same thing on top of the pp executable.

So I thought that I could just

   use lib 'foo';

in my source, and then drop the plugins to directory 'foo'.  To my
disappointment, this fails, the modules aren't found. Drats.
To my utter surprise, I got it working like this:

   use lib 'foo';
   use lib 'bar';

...and then dropping the plugins to 'foo'.  Now the questions:

   * is that intended / accidental behaviour?
   * is there a better way to do what I want?

Here's a simple demo: 'foo' is added to @INC as intended, 'bar' isn't.
----------------------------------------------------------------------
$ cat local_includes.pl 
use Data::Dumper;
use lib 'foo';
use lib 'bar';
print Dumper(\@INC);
$ pp local_includes.pl
$ ./a.out
$VAR1 = [
          'foo',
          sub { "DUMMY" },
          
'/tmp/par-68616a/cache-5bde0b3f6eab9c5f0be91ed26371a4bb8b7cbac1/inc/lib',
          '/tmp/par-68616a/cache-5bde0b3f6eab9c5f0be91ed26371a4bb8b7cbac1/inc',
          sub { "DUMMY" },
          sub { "DUMMY" }
        ];
----------------------------------------------------------------------

--
Cheers,
haj

Reply via email to