-- Ken Williams <[EMAIL PROTECTED]>
> Hi Steven,
>
> On VMS is 'USER:[SLEMBARK.FINDBIN-LIBS-1_20]' an absolute path, i.e. is
> the SLEMBARK directory understood to be at the root of the USER volume?
> If so, probably splitpath() is actually returning the wrong result. On
> other platforms it returns an initial empty string to indicate an
> absolute path (it's kind of an historical accident, but now that's just
> its semantics):
Yes. On VMS dir's referenced under a logical volume are
absolute to that volume.
What is interesting is that
my ( $vol, $bin ) = splitpath $Bin;
my @subdirz = splitdir $bin;
my $path = catpath $vol, catdir @subdirz, 'lib';
goes from
USER:[SLEMBARK.FINDBIN-LIBS-1_20]
to
USER:[.SLEMBARK.FINDBIN-LIBS-1_20.lib]
which adds a relative path (leading '.') an input dir
that originally did not have one.
Until I use abs_path to try and resolve the logical volume
(which may be a search list) into a physical volume,
it should be opaque.
> % perl -MFile::Spec::Functions=:ALL -de1
> ...
> DB<1> x $bin = '/foo/bar/baz';
> 0 '/foo/bar/baz'
> DB<2> x ( $vol, $dir ) = splitpath $bin;
> 0 ''
> 1 '/foo/bar/'
> DB<3> x @subdirz = splitdir $dir;
> 0 ''
> 1 'foo'
> 2 'bar'
> 3 ''
> DB<4> x $libdir = catdir @subdirz, 'lib';
> 0 '/foo/bar/lib'
>
>
> That empty string is the only clue catdir() gets that it should be
> forming an absolute path instead of a relative one.
>
> Then we'll need to make sure catdir('', 'SLEMBARK', 'FINDBIN-LIBS-1_20',
> 'lib') returns the right result too, '[SLEMBARK.FINDBIN-LIBS-1_20.lib]'.
Then the problem was splitdir '[SLEMBARK.blah]' returning
without a leading ''.
This gives me a fix for the moment at least: I can unshift
a leading '' into @subdirz since $FindBin::Bin is always
supposed to be an absolute path.
thanx
--
Steven Lembark 85-09 90th Street
Workhorse Computing Woodhaven, NY 11421
[EMAIL PROTECTED] 1 888 359 3508