Conflicting storage orders make utter mess out of the numbers. If a
little-endian host (Intel, VAX) stores 0x12345678 (305419896 in
-decimal), a big-endian host (Motorola, MIPS, Sparc, PA) reads it as
-0x78563412 (2018915346 in decimal). To avoid this problem in network
-(socket) connections use the C<pack> and C<unpack> formats C<n>
-and C<N>, the "network" orders. These are guaranteed to be portable.
+decimal), a big-endian host (Motorola, Sparc, PA) reads it as
+0x78563412 (2018915346 in decimal). Alpha and MIPS can be either:
+Digital/Compaq used/uses them in little-endian mode; SGI/Cray uses
+them in big-endian mode. To avoid this problem in network (socket)
+connections use the C<pack> and C<unpack> formats C<n> and C<N>, the
+"network" orders. These are guaranteed to be portable.
You can explore the endianness of your platform by unpacking a
data structure packed in native format such as:
either of the variables set like so:
$is_big_endian = unpack("h*", pack("s", 1)) =~ /01/;
- $is_litte_endian = unpack("h*", pack("s", 1)) =~ /^1/;
+ $is_little_endian = unpack("h*", pack("s", 1)) =~ /^1/;
Differing widths can cause truncation even between platforms of equal
endianness. The platform of shorter width loses the upper parts of the
notion of a "path" to uniquely identify a file on the system. How
that path is really written, though, differs considerably.
-Atlhough similar, file path specifications differ between Unix,
+Although similar, file path specifications differ between Unix,
Windows, S<Mac OS>, OS/2, VMS, VOS, S<RISC OS>, and probably others.
Unix, for example, is one of the few OSes that has the elegant idea
of a single root directory.
most platforms (though many of them do not support any type of
forking). The problem with using them arises from what you invoke
them on. External tools are often named differently on different
-platforms, may not be available in the same location, migth accept
+platforms, may not be available in the same location, might accept
different arguments, can behave differently, and often present their
results in a platform-dependent way. Thus, you should seldom depend
on them to produce consistent results. (Then again, if you're calling
=item Mailing list: cpan-testers@perl.org
-=item Testing results: C<http://testers.cpan.org/>
+=item Testing results: http://testers.cpan.org/
=back
=over 4
-=item The djgpp environment for DOS, C<http://www.delorie.com/djgpp/>
+=item *
-=item The EMX environment for DOS, OS/2, etc. C<emx@iaehv.nl>,
-C<http://www.leo.org/pub/comp/os/os2/leo/gnu/emx+gcc/index.html> or
-C<ftp://hobbes.nmsu.edu/pub/os2/dev/emx>
+The djgpp environment for DOS, http://www.delorie.com/djgpp/
+and L<perldos>.
-=item Build instructions for Win32, L<perlwin32>.
+=item *
-=item The ActiveState Pages, C<http://www.activestate.com/>
+The EMX environment for DOS, OS/2, etc. emx@iaehv.nl,
+http://www.leo.org/pub/comp/os/os2/leo/gnu/emx+gcc/index.html or
+ftp://hobbes.nmsu.edu/pub/os2/dev/emx. Also L<perlos2>.
-=item The Cygwin environment for Win32; F<README.cygwin> (installed
-as L<perlcygwin>), C<http://sourceware.cygnus.com/cygwin/>
+=item *
-=item The U/WIN environment for Win32,
-C<http://www.research.att.com/sw/tools/uwin/>
+Build instructions for Win32 in L<perlwin32>, or under the Cygnus environment
+in L<perlcygwin>.
+
+=item *
+
+The C<Win32::*> modules in L<Win32>.
+
+=item *
+
+The ActiveState Pages, http://www.activestate.com/
+
+=item *
+
+The Cygwin environment for Win32; F<README.cygwin> (installed
+as L<perlcygwin>), http://sources.redhat.com/cygwin/
+
+=item *
+
+The U/WIN environment for Win32,
+<http://www.research.att.com/sw/tools/uwin/
+
+=item Build instructions for OS/2, L<perlos2>
=back
=over 4
-=item The MacPerl Pages, C<http://www.macperl.com/>.
+=item *
+
+The MacPerl Pages, http://www.macperl.com/ .
+
+=item *
+
+The MacPerl mailing lists, http://www.macperl.org/ .
-=item The MacPerl mailing lists, C<http://www.macperl.org/>.
+=item *
-=item MacPerl Module Porters, C<http://pudge.net/mmp/>.
+MacPerl Module Porters, http://pudge.net/mmp/ .
=back
=head2 VMS
-Perl on VMS is discussed in F<vms/perlvms.pod> in the perl distribution.
+Perl on VMS is discussed in L<perlvms> in the perl distribution.
Perl on VMS can accept either VMS- or Unix-style file
specifications as in either of the following:
=over 4
-=item F<README.vms> (installed as L<README_vms>), L<perlvms>
+=item *
-=item vmsperl list, C<majordomo@perl.org>
+F<README.vms> (installed as L<README_vms>), L<perlvms>
-Put the words C<subscribe vmsperl> in message body.
+=item *
-=item vmsperl on the web, C<http://www.sidhe.org/vmsperl/index.html>
+vmsperl list, majordomo@perl.org
+
+(Put the words C<subscribe vmsperl> in message body.)
+
+=item *
+
+vmsperl on the web, http://www.sidhe.org/vmsperl/index.html
=back
The value of C<$^O> on VOS is "VOS". To determine the architecture that
you are running on without resorting to loading all of C<%Config> you
-can examine the content of the C<@INC> array like so:
+can examine the content of the @INC array like so:
if ($^O =~ /VOS/) {
print "I'm on a Stratus box!\n";
=over 4
-=item F<README.vos>
+=item *
+
+F<README.vos>
-=item VOS mailing list
+=item *
+
+The VOS mailing list.
There is no specific mailing list for Perl on VOS. You can post
comments to the comp.sys.stratus newsgroup, or subscribe to the general
Stratus mailing list. Send a letter with "Subscribe Info-Stratus" in
the message body to majordomo@list.stratagy.com.
-=item VOS Perl on the web at C<http://ftp.stratus.com/pub/vos/vos.html>
+=item *
+
+VOS Perl on the web at http://ftp.stratus.com/pub/vos/vos.html
=back
systems). On the mainframe perl currently works under the "Unix system
services for OS/390" (formerly known as OpenEdition), VM/ESA OpenEdition, or
the BS200 POSIX-BC system (BS2000 is supported in perl 5.6 and greater).
+See L<perlos390> for details.
As of R2.5 of USS for OS/390 and Version 2.3 of VM/ESA these Unix
sub-systems do not support the C<#!> shebang trick for script invocation.
=over 4
-=item F<README.os390>, F<README.posix-bc>, F<README.vmesa>
+=item *
+
+*
+
+L<perlos390>, F<README.os390>, F<perlposix-bc>, F<README.vmesa>,
+L<perlebcdic>.
-=item perl-mvs list
+=item *
The perl-mvs@perl.org list is for discussion of porting issues as well as
general usage issues for all EBCDIC Perls. Send a message body of
"subscribe perl-mvs" to majordomo@perl.org.
-=item AS/400 Perl information at C<http://as400.rochester.ibm.com/>
+=item *
+
+AS/400 Perl information at
+http://as400.rochester.ibm.com/
as well as on CPAN in the F<ports/> directory.
=back
=over 4
-=item Amiga, F<README.amiga> (installed as L<perlamiga>).
+=item *
+
+Amiga, F<README.amiga> (installed as L<perlamiga>).
+
+=item *
+
+Atari, F<README.mint> and Guido Flohr's web page
+http://stud.uni-sb.de/~gufl0000/
-=item Atari, F<README.mint> and Guido Flohr's web page
-C<http://stud.uni-sb.de/~gufl0000/>
+=item *
-=item Be OS, F<README.beos>
+Be OS, F<README.beos>
-=item HP 300 MPE/iX, F<README.mpeix> and Mark Bixby's web page
-C<http://www.cccd.edu/~markb/perlix.html>
+=item *
-=item Novell Netware
+HP 300 MPE/iX, F<README.mpeix> and Mark Bixby's web page
+http://www.cccd.edu/~markb/perlix.html
+
+=item *
A free perl5-based PERL.NLM for Novell Netware is available in
-precompiled binary and source code form from C<http://www.novell.com/>
+precompiled binary and source code form from http://www.novell.com/
as well as from CPAN.
-=item Plan 9, F<README.plan9>
+=item
+
+Plan 9, F<README.plan9>
=back
=item stat
+Platforms that do not have rdev, blksize, or blocks will return these
+as '', so numeric comparison or manipulation of these fields may cause
+'not numeric' warnings.
+
mtime and atime are the same thing, and ctime is creation time instead of
inode change time. (S<Mac OS>)
mtime, atime and ctime all return the last modification time. Device and
inode are not necessarily reliable. (S<RISC OS>)
+dev, rdev, blksize, and blocks are not available. inode is not
+meaningful and will differ between stat calls on the same file. (os2)
+
=item symlink OLDFILE,NEWFILE
Not implemented. (Win32, VMS, S<RISC OS>)
Not implemented. (S<Mac OS>, VOS)
Can only be applied to process handles returned for processes spawned
-using C<system(1, ...)>. (Win32)
+using C<system(1, ...)> or pseudo processes created with C<fork()>. (Win32)
Not useful. (S<RISC OS>)
=over 4
+=item v1.47, 22 March 2000
+
+Various cleanups from Tom Christiansen, including migration of
+long platform listings from L<perl>.
+
=item v1.46, 12 February 2000
Updates for VOS and MPE/iX. (Peter Prymmer) Other small changes.
AIX
DOS DJGPP 1)
+ EPOC
FreeBSD
HP-UX
IRIX
OS/2
QNX
Rhapsody/Darwin 2)
+ SCO SV
+ SINIX
Solaris
SVR4
Tru64 UNIX 3)
Tandem Guardian 5.004
The following platforms have only binaries available via
-http://www.perl.com/CPAN/ports/index.html:
+http://www.perl.com/CPAN/ports/index.html :
Perl release
in case you are in a hurry you can check
http://www.perl.com/CPAN/ports/index.html for binary distributions.
+=head1 SEE ALSO
+
+L<perlamiga>, L<perlcygwin>, L<perldos>, L<perlhpux>, L<perlos2>,
+L<perlos390>, L<perlwin32>, L<perlvms>, and L<Win32>.
+
=head1 AUTHORS / CONTRIBUTORS
Abigail <abigail@fnx.com>,
=head1 VERSION
-Version 1.46, last modified 12 February 2000
+Version 1.47, last modified 22 March 2000