X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlport.pod;h=65ca9d8a3aaef8d8b1551210d6c9ecd835d3d3ba;hb=522b859adcc800ddbbe593fba580633bb305644f;hp=871e1094315621522ba9387a7450e5ba869c816e;hpb=3f1f789b3ede74d7efaf7fd0fee1d844293351f7;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlport.pod b/pod/perlport.pod index 871e109..65ca9d8 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -75,7 +75,7 @@ This information should not be considered complete; it includes possibly transient information about idiosyncrasies of some of the ports, almost all of which are in a state of constant evolution. Thus, this material should be considered a perpetual work in progress -(Under Construction). +(C<< Under Construction >>). =head1 ISSUES @@ -104,7 +104,7 @@ newlines: #... } -You can get away with this on Unix and MacOS (they have a single +You can get away with this on Unix and Mac OS (they have a single character end-of-line), but the same program will break under DOSish perls because you're only chop()ing half the end-of-line. Instead, chomp() should be used to trim newlines. The Dunce::Files module can @@ -171,8 +171,8 @@ newline representation. A single line of code will often suffice: Some of this may be confusing. Here's a handy reference to the ASCII CR and LF characters. You can print it out and stick it in your wallet. - LF == \012 == \x0A == \cJ == ASCII 10 - CR == \015 == \x0D == \cM == ASCII 13 + LF eq \012 eq \x0A eq \cJ eq chr(10) eq ASCII 10 + CR eq \015 eq \x0D eq \cM eq chr(13) eq ASCII 13 | Unix | DOS | Mac | --------------------------- @@ -188,7 +188,23 @@ The Unix column assumes that you are not accessing a serial line "\n", and "\n" on output becomes CRLF. These are just the most common definitions of C<\n> and C<\r> in Perl. -There may well be others. +There may well be others. For example, on an EBCDIC implementation +such as z/OS (OS/390) or OS/400 (using the ILE, the PASE is ASCII-based) +the above material is similar to "Unix" but the code numbers change: + + LF eq \025 eq \x15 eq chr(21) eq CP-1047 21 + LF eq \045 eq \x25 eq \cU eq chr(37) eq CP-0037 37 + CR eq \015 eq \x0D eq \cM eq chr(13) eq CP-1047 13 + CR eq \015 eq \x0D eq \cM eq chr(13) eq CP-0037 13 + + | z/OS | OS/400 | + ---------------------- + \n | LF | LF | + \r | CR | CR | + \n * | LF | LF | + \r * | CR | CR | + ---------------------- + * text-mode STDIO =head2 Numbers endianness and Width @@ -262,7 +278,7 @@ timestamp (meaning that about the only portable timestamp is the modification timestamp), or one second granularity of any timestamps (e.g. the FAT filesystem limits the time granularity to two seconds). -The "inode change timestamp" (the <-C> filetest) may really be the +The "inode change timestamp" (the C<-C> filetest) may really be the "creation timestamp" (which it is not in UNIX). VOS perl can emulate Unix filenames with C as path separator. The @@ -357,7 +373,7 @@ Three-arg open can also help protect against this translation in cases where it is undesirable. Don't use C<:> as a part of a filename since many systems use that for -their own semantics (MacOS Classic for separating pathname components, +their own semantics (Mac OS Classic for separating pathname components, many networking schemes and utilities for separating the nodename and the pathname, and so on). For the same reasons, avoid C<@>, C<;> and C<|>. @@ -432,6 +448,38 @@ directories. Don't count on specific values of C<$!>. +=head2 Command names versus file pathnames + +Don't assume that the name used to invoke a command or program with +C or C can also be used to test for the existence of the +file that holds the executable code for that command or program. +First, many systems have "internal" commands that are built-in to the +shell or OS and while these commands can be invoked, there is no +corresponding file. Second, some operating systems (e.g., Cygwin, +DJGPP, OS/2, and VOS) have required suffixes for executable files; +these suffixes are generally permitted on the command name but are not +required. Thus, a command like "perl" might exist in a file named +"perl", "perl.exe", or "perl.pm", depending on the operating system. +The variable "_exe" in the Config module holds the executable suffix, +if any. Third, the VMS port carefully sets up $^X and +$Config{perlpath} so that no further processing is required. This is +just as well, because the matching regular expression used below would +then have to deal with a possible trailing version number in the VMS +file name. + +To convert $^X to a file pathname, taking account of the requirements +of the various operating system possibilities, say: + use Config; + $thisperl = $^X; + if ($^O ne 'VMS') + {$thisperl .= $Config{_exe} unless $thisperl =~ m/$Config{_exe}$/i;} + +To convert $Config{perlpath} to a file pathname, say: + use Config; + $thisperl = $Config{perlpath}; + if ($^O ne 'VMS') + {$thisperl .= $Config{_exe} unless $thisperl =~ m/$Config{_exe}$/i;} + =head2 Interprocess Communication (IPC) In general, don't directly access the system in code meant to be @@ -784,6 +832,13 @@ Win32::GetOSVersion(). For example: print +('3.1','95','NT')[$os_version_info[4]],"\n"; } +There are also Win32::IsWinNT() and Win32::IsWin95(), try C, +and as of libwin32 0.19 (not part of the core Perl distribution) +Win32::GetOSName(). The very portable POSIX::uname() will work too: + + c:\> perl -MPOSIX -we "print join '|', uname" + Windows NT|moonru|5.0|Build 2195 (Service Pack 2)|x86 + Also see: =over 4 @@ -797,7 +852,7 @@ and L. 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. +ftp://hobbes.nmsu.edu/pub/os2/dev/emx/ Also L. =item * @@ -1024,12 +1079,12 @@ Perl on VOS is discussed in F in the perl distribution (installed as L). Perl on VOS can accept either VOS- or Unix-style file specifications as in either of the following: - $ perl -ne "print if /perl_setup/i" >system>notices - $ perl -ne "print if /perl_setup/i" /system/notices + C<< $ perl -ne "print if /perl_setup/i" >system>notices >> + C<< $ perl -ne "print if /perl_setup/i" /system/notices >> or even a mixture of both as in: - $ perl -ne "print if /perl_setup/i" >system/notices + C<< $ perl -ne "print if /perl_setup/i" >system/notices >> Even though VOS allows the slash character to appear in object names, because the VOS port of Perl interprets it as a pathname @@ -1038,12 +1093,6 @@ contain a slash character cannot be processed. Such files must be renamed before they can be processed by Perl. Note that VOS limits file names to 32 or fewer characters. -See F for restrictions that apply when Perl is built -with the alpha version of VOS POSIX.1 support. - -Perl on VOS is built without any extensions and does not support -dynamic loading. - 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 @INC array like so: @@ -1055,26 +1104,13 @@ can examine the content of the @INC array like so: die; } - if (grep(/860/, @INC)) { - print "This box is a Stratus XA/R!\n"; - - } elsif (grep(/7100/, @INC)) { - print "This box is a Stratus HP 7100 or 8xxx!\n"; - - } elsif (grep(/8000/, @INC)) { - print "This box is a Stratus HP 8xxx!\n"; - - } else { - print "This box is a Stratus 68K!\n"; - } - Also see: =over 4 =item * -F +F (installed as L) =item * @@ -1082,12 +1118,12 @@ 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 +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 http://ftp.stratus.com/pub/vos/vos.html +VOS Perl on the web at http://ftp.stratus.com/pub/vos/posix/posix.html =back @@ -1100,7 +1136,9 @@ Character Code Set ID 0037 for OS/400 and either 1047 or POSIX-BC for S/390 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 for details. +See L for details. Note that for OS/400 there is also a port of +Perl 5.8.1/5.9.0 or later to the PASE which is ASCII-based (as opposed to +ILE which is EBCDIC-based), see L. 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. @@ -1310,6 +1348,7 @@ in the "OTHER" category include: OS $^O $Config{'archname'} ------------------------------------------ Amiga DOS amigaos m68k-amigos + BeOS beos MPE/iX mpeix PA-RISC1.1 See also: @@ -1342,7 +1381,7 @@ as well as from CPAN. =item * -Plan 9, F +S, F =back @@ -1440,32 +1479,35 @@ Only good for changing "owner" and "other" read-write access. (S) Access permissions are mapped onto VOS access-control list changes. (VOS) +The actual permissions set depend on the value of the C +in the SYSTEM environment settings. (Cygwin) + =item chown LIST -Not implemented. (S, Win32, Plan9, S, VOS) +Not implemented. (S, Win32, S, S) Does nothing, but won't fail. (Win32) +A little funky, because VOS's notion of ownership is a little funky (VOS). + =item chroot FILENAME =item chroot -Not implemented. (S, Win32, VMS, Plan9, S, VOS, VM/ESA) +Not implemented. (S, Win32, VMS, S, S, VOS, VM/ESA) =item crypt PLAINTEXT,SALT May not be available if library or source was not provided when building perl. (Win32) -Not implemented. (VOS) - =item dbmclose HASH -Not implemented. (VMS, Plan9, VOS) +Not implemented. (VMS, S, VOS) =item dbmopen HASH,DBNAME,MODE -Not implemented. (VMS, Plan9, VOS) +Not implemented. (VMS, S, VOS) =item dump LABEL @@ -1507,7 +1549,7 @@ Available only on Windows NT (not on Windows 95). (Win32) =item fork -Not implemented. (S, AmigaOS, S, VOS, VM/ESA) +Not implemented. (S, AmigaOS, S, VM/ESA, VMS) Emulated using multiple interpreters. See L. (Win32) @@ -1520,11 +1562,11 @@ Not implemented. (S, S) =item getpgrp PID -Not implemented. (S, Win32, VMS, S, VOS) +Not implemented. (S, Win32, VMS, S) =item getppid -Not implemented. (S, Win32, VMS, S) +Not implemented. (S, Win32, S) =item getpriority WHICH,WHO @@ -1542,7 +1584,7 @@ Not implemented. (S, Win32, VMS, S) =item getnetbyname NAME -Not implemented. (S, Win32, Plan9) +Not implemented. (S, Win32, S) =item getpwuid UID @@ -1556,7 +1598,7 @@ Not implemented. (S, Win32, VMS, S) =item getnetbyaddr ADDR,ADDRTYPE -Not implemented. (S, Win32, Plan9) +Not implemented. (S, Win32, S) =item getprotobynumber NUMBER @@ -1580,39 +1622,31 @@ Not implemented. (S, Win32) =item getnetent -Not implemented. (S, Win32, Plan9) +Not implemented. (S, Win32, S) =item getprotoent -Not implemented. (S, Win32, Plan9) +Not implemented. (S, Win32, S) =item getservent -Not implemented. (Win32, Plan9) - -=item setpwent - -Not implemented. (S, Win32, S) - -=item setgrent - -Not implemented. (S, Win32, VMS, S) +Not implemented. (Win32, S) =item sethostent STAYOPEN -Not implemented. (S, Win32, Plan9, S) +Not implemented. (S, Win32, S, S) =item setnetent STAYOPEN -Not implemented. (S, Win32, Plan9, S) +Not implemented. (S, Win32, S, S) =item setprotoent STAYOPEN -Not implemented. (S, Win32, Plan9, S) +Not implemented. (S, Win32, S, S) =item setservent STAYOPEN -Not implemented. (Plan9, Win32, S) +Not implemented. (S, Win32, S) =item endpwent @@ -1628,19 +1662,19 @@ Not implemented. (S, Win32) =item endnetent -Not implemented. (S, Win32, Plan9) +Not implemented. (S, Win32, S) =item endprotoent -Not implemented. (S, Win32, Plan9) +Not implemented. (S, Win32, S) =item endservent -Not implemented. (Plan9, Win32) +Not implemented. (S, Win32) =item getsockopt SOCKET,LEVEL,OPTNAME -Not implemented. (Plan9) +Not implemented. (S) =item glob EXPR @@ -1700,7 +1734,7 @@ Return values (especially for device and inode) may be bogus. (Win32) =item msgrcv ID,VAR,SIZE,TYPE,FLAGS -Not implemented. (S, Win32, VMS, Plan9, S, VOS) +Not implemented. (S, Win32, VMS, S, S, VOS) =item open FILEHANDLE,EXPR @@ -1742,7 +1776,7 @@ Not implemented. (S, Win32, VMS, S, VOS) =item setgrent -Not implemented. (MPE/iX, Win32) +Not implemented. (S, MPE/iX, VMS, Win32, S, VOS) =item setpgrp PID,PGRP @@ -1754,11 +1788,11 @@ Not implemented. (S, Win32, VMS, S, VOS) =item setpwent -Not implemented. (MPE/iX, Win32) +Not implemented. (S, MPE/iX, Win32, S, VOS) =item setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL -Not implemented. (Plan9) +Not implemented. (S) =item shmctl ID,CMD,ARG @@ -1831,8 +1865,8 @@ C<$?> right by eight to get the exit value, or that C<$? & 127> would give you the number of the signal that terminated the program, or that C<$? & 128> would test true if the program was terminated by a coredump. Instead, use the POSIX W*() interfaces: for example, use -WIFEXITED($?) an WEXITVALUE($?) to test for a normal exit and the exit -value, and WIFSIGNALED($?) and WTERMSIG($?) for a signal exit and the +WIFEXITED($?) and WEXITVALUE($?) to test for a normal exit and the exit +value, WIFSIGNALED($?) and WTERMSIG($?) for a signal exit and the signal. Core dumping is not a portable concept, so there's no portable way to test for that. @@ -1887,7 +1921,7 @@ Not useful. (S) Not implemented. (Older versions of VMS) -Truncation to zero-length only. (VOS) +Truncation to same-or-shorter lengths only. (VOS) If a FILEHANDLE is supplied, it must be writable and opened in append mode (i.e., use C<<< open(FH, '>>filename') >>> @@ -1917,7 +1951,7 @@ two seconds. (Win32) =item waitpid PID,FLAGS -Not implemented. (S, VOS) +Not implemented. (S) Can only be applied to process handles returned for processes spawned using C or pseudo processes created with C. (Win32) @@ -1930,6 +1964,10 @@ Not useful. (S) =over 4 +=item v1.49, 12 August 2002 + +Updates for VOS from Paul Green. + =item v1.48, 02 February 2001 Various updates from perl5-porters over the past year, supported @@ -2017,84 +2055,70 @@ First public release with perl5.005. =head1 Supported Platforms -As of early 2001 (the Perl releases 5.6.1 and 5.7.1), the following -platforms are able to build Perl from the standard source code -distribution available at http://www.cpan.org/src/index.html - - AIX - AmigaOS - Darwin (Mac OS X) - DG/UX - DOS DJGPP 1) - DYNIX/ptx - EPOC - FreeBSD - HP-UX - IRIX - Linux - MachTen - MacOS Classic 2) - NonStop-UX - ReliantUNIX (SINIX) - OpenBSD - OpenVMS (VMS) - OS/2 - OS X - QNX - Solaris - Tru64 UNIX (DEC OSF/1, Digital UNIX) - UNICOS - UNICOS/mk - VOS - Win32/NT/2K 3) +As of July 2002 (the Perl release 5.8.0), the following platforms are +able to build Perl from the standard source code distribution +available at http://www.cpan.org/src/index.html + + AIX + BeOS + Cygwin + DG/UX + DOS DJGPP 1) + DYNIX/ptx + EPOC R5 + FreeBSD + HP-UX + IRIX + Linux + Mac OS Classic + Mac OS X (Darwin) + MPE/iX + NetBSD + NetWare + NonStop-UX + ReliantUNIX (SINIX) + OpenBSD + OpenVMS (VMS) + OS/2 + OS/400 (using the PASE) (since Perl 5.8.1/5.9.0) + PowerUX + POSIX-BC (BS2000) + QNX + Solaris + SunOS 4 + SUPER-UX + Tru64 UNIX (DEC OSF/1, Digital UNIX) + UNICOS + UNICOS/mk + UTS + VOS + Win95/98/ME/2K/XP 2) + WinCE + z/OS (OS/390) + VM/ESA 1) in DOS mode either the DOS or OS/2 ports can be used - 2) Mac OS Classic (pre-X) is almost 5.6.1-ready; building from - the source does work with 5.6.1, but additional MacOS specific - source code is needed for a complete build. See the web - site http://dev.macperl.org/ for more information. - 3) compilers: Borland, Cygwin, Mingw32 EGCS/GCC, VC++ - -The following platforms worked for the previous releases (5.6.0 and 5.7.0), -but we did not manage to test these in time for the 5.7.1 release. -There is a very good chance that these will work fine with the 5.7.1. - - DomainOS - Hurd - LynxOS - MinGW - MPE/iX - NetBSD - PowerMAX - SCO SV - SunOS - SVR4 - Unixware - Windows 3.1 - Windows 95 - Windows 98 - Windows Me - -The following platform worked for the 5.005_03 major release but not -for 5.6.0. Standardization on UTF-8 as the internal string -representation in 5.6.0 and 5.6.1 introduced incompatibilities in this -EBCDIC platform. While Perl 5.7.1 will build on this platform some -regression tests may fail and the C pragma typically -introduces text handling errors. - - OS/390 1) - - 1) previously known as MVS, about to become z/OS. - -Strongly related to the OS/390 platform by also being EBCDIC-based -mainframe platforms are the following platforms: - - POSIX-BC (BS2000) - VM/ESA - -These are also expected to work, albeit with no UTF-8 support, under 5.6.1 -for the same reasons as OS/390. Contact the mailing list perl-mvs@perl.org -for more details. + 2) compilers: Borland, MinGW (GCC), VC6 + +The following platforms worked with the previous releases (5.6 and +5.7), but we did not manage either to fix or to test these in time +for the 5.8.0 release. There is a very good chance that many of these +will work fine with the 5.8.0. + + BSD/OS + DomainOS + Hurd + LynxOS + MachTen + PowerMAX + SCO SV + SVR4 + Unixware + Windows 3.1 + +Known to be broken for 5.8.0 (but 5.6.1 and 5.7.2 can be used): + + AmigaOS The following platforms have been known to build Perl from source in the past (5.005_03 and earlier), but we haven't been able to verify @@ -2104,63 +2128,53 @@ active champion on these platforms--or both. They used to work, though, so go ahead and try compiling them, and let perlbug@perl.org of any trouble. - 3b1 - A/UX - BeOS - BSD/OS - ConvexOS - CX/UX - DC/OSx - DDE SMES - DOS EMX - Dynix - EP/IX - ESIX - FPS - GENIX - Greenhills - ISC - MachTen 68k - MiNT - MPC - NEWS-OS - NextSTEP - OpenSTEP - Opus - Plan 9 - PowerUX - RISC/os - SCO ODT/OSR - Stellar - SVR2 - TI1500 - TitanOS - Ultrix - Unisys Dynix - Unixware - UTS - -Support for the following platform is planned for a future Perl release: - - Netware + 3b1 + A/UX + ConvexOS + CX/UX + DC/OSx + DDE SMES + DOS EMX + Dynix + EP/IX + ESIX + FPS + GENIX + Greenhills + ISC + MachTen 68k + MiNT + MPC + NEWS-OS + NextSTEP + OpenSTEP + Opus + Plan 9 + RISC/os + SCO ODT/OSR + Stellar + SVR2 + TI1500 + TitanOS + Ultrix + Unisys Dynix The following platforms have their own source code distributions and -binaries available via http://www.cpan.org/ports/index.html: +binaries available via http://www.cpan.org/ports/ - Perl release + Perl release - Netware 5.003_07 - OS/400 5.005_02 - Tandem Guardian 5.004 + OS/400 (ILE) 5.005_02 + Tandem Guardian 5.004 The following platforms have only binaries available via http://www.cpan.org/ports/index.html : - Perl release + Perl release - Acorn RISCOS 5.005_02 - AOS 5.002 - LynxOS 5.004_02 + Acorn RISCOS 5.005_02 + AOS 5.002 + LynxOS 5.004_02 Although we do suggest that you always build your own Perl from the source code, both for maximal configurability and for security, @@ -2169,12 +2183,14 @@ http://www.cpan.org/ports/index.html for binary distributions. =head1 SEE ALSO -L, L, L, L, L, -L, L, L, L, L, L, -L, L, L, L, L, -L, L, L, L, L, -L, L, L, L, -L, L, L, L, and L. +L, L, L, L, L, +L, L, L, L, L, +L, L, L, L, L, +L, L, L, L, +L, L, L, L, +L, L, L, L, +L, L, L, L, +L, and L. =head1 AUTHORS / CONTRIBUTORS @@ -2188,7 +2204,7 @@ Andy Dougherty , Dominic Dunlop , Neale Ferguson , David J. Fiander , -Paul Green , +Paul Green , M.J.T. Guy , Jarkko Hietaniemi , Luther Huffman , @@ -2199,7 +2215,7 @@ Andrew M. Langmead , Larry Moore , Paul Moore , Chris Nandor , -Matthias Neeracher , +Matthias Neeracher , Philip Newton , Gary Ng <71564.1743@CompuServe.COM>, Tom Phoenix , @@ -2212,6 +2228,3 @@ Michael G Schwern , Dan Sugalski , Nathan Torkington . -=head1 VERSION - -Version 1.50, last modified 10 Jul 2001