At 10:38 AM -0700 4/17/02, Bill Becker wrote:
>What would be the best way to determine this programmatically ???
Besides modules like File::Spec, in many cases, you can use Perl's OS
name variable, or peak into Perl's '\n' newline construct, which I
prefer.
Perl's special variable $^O (that's the letter 'Oh') has a name for
the OS, so you can test it for matches against known OS names. IIRC,
Mac pre-OS X always has 'mac' in it. Perl running under OS X returns
'darwin'. Try it out in the various systems on which you use Perl, to
see what to match.
That's still a little indeterminate, isn't it?
So I prefer to take advantage of Perl's "\n" construct, which uses
the newline native to the OS Perl's executing under:
my $SEP = "\n" eq "\012" ? '/' : # *N*X
"\n" eq "\015" ? ':' : # Mac
"\n" eq "\015\012" ? '/' : # DOS/Win
'/' ; # default
This works even if you've changed the input & output line separators,
$/ and $\.
There are other OSes, and other end-of-line combos, so you might have
to modify these. Some would use '\' as the separator under some
dos/win regimes.
With a little care about path separators and newlines, you can make
most Perl scripts agnostic with respect to OS.
HTH
1;
>>
>> In OS X, Perl is uses the UNIX path separator, '/', instead of Mac's ':'.
>>
>> Also, paths are UNIX-style. If you use BBEdit, open the script or
>> file in question, and get the path from the toolbar button. That'll
>> give you an example to follow.
>>
--
- Bruce
__bruce_van_allen__santa_cruz_ca__