X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlport.pod;h=250e4266bfc8273c40e97a4d2926ee3fc6e890b5;hb=d29820a7a5800074874ec72fde5f57c0f699c7c8;hp=871e1094315621522ba9387a7450e5ba869c816e;hpb=3f1f789b3ede74d7efaf7fd0fee1d844293351f7;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlport.pod b/pod/perlport.pod index 871e109..250e426 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 @@ -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 or OS/400 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 @@ -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 @@ -797,7 +845,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 +1072,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,11 +1086,12 @@ 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. +Perl on VOS can be built using two different compilers and two different +versions of the POSIX runtime. The recommended method for building full +Perl is with the GNU C compiler and the generally-available version of +VOS POSIX support. See F (installed as L) for +restrictions that apply when Perl is built using the VOS Standard C +compiler or the alpha version of VOS POSIX support. 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 @@ -1074,7 +1123,7 @@ Also see: =item * -F +F (installed as L) =item * @@ -1082,12 +1131,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 @@ -1310,6 +1359,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: @@ -1440,6 +1490,9 @@ 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) @@ -1590,14 +1643,6 @@ Not implemented. (S, Win32, Plan9) Not implemented. (Win32, Plan9) -=item setpwent - -Not implemented. (S, Win32, S) - -=item setgrent - -Not implemented. (S, Win32, VMS, S) - =item sethostent STAYOPEN Not implemented. (S, Win32, Plan9, S) @@ -1742,7 +1787,7 @@ Not implemented. (S, Win32, VMS, S, VOS) =item setgrent -Not implemented. (MPE/iX, Win32) +Not implemented. (S, MPE/iX, VMS, Win32, VMS, S) =item setpgrp PID,PGRP @@ -1754,7 +1799,7 @@ Not implemented. (S, Win32, VMS, S, VOS) =item setpwent -Not implemented. (MPE/iX, Win32) +Not implemented. (S, MPE/iX, Win32, S) =item setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL @@ -1831,8 +1876,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. @@ -2017,84 +2062,67 @@ 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 June 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 + MacOS Classic + MacOS X (Darwin) + MPE/iX + NetBSD + NetWare + NonStop-UX + ReliantUNIX (SINIX) + OpenBSD + OpenVMS (VMS) + OS/2 + POSIX-BC (BS2000) + QNX + Solaris + Tru64 UNIX (DEC OSF/1, Digital UNIX) + UNICOS + UNICOS/mk + UTS + VOS + WinNT/2000/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, Cygwin (GCC), 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. The only one known for certain to be +broken for 5.8.0 is the AmigaOS. + + AmigaOS + DomainOS + Hurd + LynxOS + MachTen + PowerMAX + SCO SV + SunOS 4 + SVR4 + Unixware + Windows 3.1 + Windows 95 + Windows 98 + Windows Me 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 +2132,57 @@ 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 + 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 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 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,7 +2191,7 @@ 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, @@ -2199,7 +2221,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 +2234,3 @@ Michael G Schwern , Dan Sugalski , Nathan Torkington . -=head1 VERSION - -Version 1.50, last modified 10 Jul 2001