in reply to Re^2: Howto Call Package from a Subdirectory
in thread Howto Call Package from a Subdirectory

That works, more or less, but gives me a warning, on Windows/perl5.6.1: Use of uninitialized value in concatenation (.) or string at [...]/lib/File/Spec/Win32.pm line 240.

The reason is the lack of the third parameter to catpath.

What's more, it still has a trailing backslash (probably a slash on Unix), which is not my idea of ideal. It might work, or it might fail on some platforms.

The following code no longer produces the warning, but I still get the trailing backslash:

$RealBin = catpath ((splitpath (rel2abs ($0)))[0,1], '');

File::Spec is dumb.

Replies are listed 'Best First'.
Re^4: Howto Call Package from a Subdirectory
by arpad.szasz (Pilgrim) on Jun 18, 2011 at 23:17 UTC

    I now use this (only tested on Linux):

    our $RealBin; BEGIN { use File::Basename 'dirname'; use File::Spec::Functions 'rel2abs'; $RealBin = rel2abs( dirname( __FILE__ ) ); } use lib "$RealBin/lib";