Tobias Eichner wrote:
I have created a Perl library that I want to use with my programs
(via require). However the Perl library should be placed at a
sub-folder of the working directory (the place where the program
runs).
For example:
/my/custom/path/ is the location of the program.
/my/custom/path/libraries/ is the location where I want to place my
Perl libraries in.
How can I implement this considering that my Perl program will run on
different platforms with different ways of writing paths ?
Would it work to use require "./libraries/mylib.pl" on all platforms
(*nix, Windows, Mac, something else) ? I don't think so. Not sure if
paths can be used overall with require (not tried it yet).
My idea would be to use the standard module File::Spec to add the
path to my libraries to @INC. For example:
my $mylibpath = File::Spec->rel2abs("libraries/");
unshift(@INC,$mylibpath);
Is this a cross-platform compatible way ? Or is there a better
solution ?
Both those methods assume that the path to the directory where the
program resides equals the current working directory. That's often the
case, but not always.
Some would suggest the use of the FindBin module. It does the right
thing, but unfortunately it is known to be buggy.
In a similar case I chose to simply say
use lib 'libraries';
and tell the users to manually change 'libraries' to the full path when
necessary.
--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/