BEGIN{($path = $0) =~ s[[\\/][^\\/]+$][];}
BEGIN{ use lib $path;}
use implies BEGIN, so that BEGIN should not be needed.
There is a simpler way: use lib do { ... }, shown in Re^2: Calculations before using lib;. Combined with the s///r syntax from newer perls, this can be collapsed to use lib do { $0=~s[[\\/][^\\/]+$][]r };.
Also note that $0 may not always contain an absolute path:
>cat tmp.pl
#!/usr/bin/perl
use strict;
use warnings;
print "$0\n";
>chmod +x tmp.pl
>perl tmp.pl
tmp.pl
>perl ./tmp.pl
./tmp.pl
>perl /tmp/tmp.pl
/tmp/tmp.pl
>./tmp.pl
./tmp.pl
>tmp.pl
./tmp.pl
>
Alexander
--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
|