At 11:49 Uhr -0700 17.04.2002, David Iberri wrote:
>Bill Becker wrote:
>
>> What would be the best way to determine this programmatically ???
>
>The File::Spec module should lead you in the right direction.
>
>$pathsep = File::Spec->catdir('');
>
>yields ":" for $pathsep on my Mac (running OS 8.6), and "/" on my Linux
>machine.
>
>Cheers,
>David Iberri
Noooooooo! Don't abuse File::Spec.
For me, running MacPerl 5.6.1, the following example script
use File::Spec;
$pathsep = File::Spec->catdir('');
print "pathsep = $pathsep \n";
yields:
pathsep = MacintoshHD:
which is a volume name, i.e. an absolute path.
Why? With MacPerl 5.6.1, catdir() has been changed to return relative paths by
default, unless the first argument is an empty string (see File::Spec::Mac version 1.3
for details). Although your statement was true with earlier versions of
File::Spec::Mac (and MacPerl 5.2.0r4), it was true only by accident. catdir() was
never designed to give you the path separator, not on Mac OS, not on Unix, not on VMS
et al. In your example, the resulting ':' on Mac OS was meant to be the current
directory, and the resulting '/' on Unix was/is meant to be the root directory.
Please don't do that at home, boys and girls.
Best regards,
--Thomas