X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlport.pod;h=88c6e8fa0f4d89395ffa3f4f84de50996dcfe672;hb=c1effa61278e47c916466883d74905b04fedc388;hp=b639c47763bf223dfe256360407d902db069efb7;hpb=31bb23b166683ca82ab1aa9af0910e80eb18a1d3;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlport.pod b/pod/perlport.pod index b639c47..88c6e8f 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -433,6 +433,16 @@ if you really have to, make it conditional on C<$^O ne 'VMS'> since in VMS the C<%ENV> table is much more than a per-process key-value string table. +On VMS, some entries in the %ENV hash are dynamically created when +their key is used on a read if they did not previously exist. The +values for C<$ENV{HOME}>, C<$ENV{TERM}>, C<$ENV{HOME}>, and C<$ENV{USER}>, +are known to be dynamically generated. The specific names that are +dynamically generated may vary with the version of the C library on VMS, +and more may exist than is documented. + +On VMS by default, changes to the %ENV hash are persistent after the process +exits. This can cause unintended issues. + Don't count on signals or C<%SIG> for anything. Don't count on filename globbing. Use C, C, and @@ -631,9 +641,6 @@ The value for C<$offset> in Unix will be C<0>, but in Mac OS will be some large number. C<$offset> can then be added to a Unix time value to get what should be the proper value on any system. -On Windows (at least), you shouldn't pass a negative value to C or -C. - =head2 Character sets and character encoding Assume very little about character sets. @@ -672,12 +679,9 @@ ISO 8859-1 bytes beyond 0x7f into your strings might cause trouble later. If the bytes are native 8-bit bytes, you can use the C pragma. If the bytes are in a string (regular expression being a curious string), you can often also use the C<\xHH> notation instead -of embedding the bytes as-is. If they are in some particular legacy -encoding (ether single-byte or something more complicated), you can -use the C pragma. (If you want to write your code in UTF-8, -you can use either the C pragma, or the C pragma.) -The C and C pragmata are available since Perl 5.6.0, and -the C pragma since Perl 5.8.0. +of embedding the bytes as-is. (If you want to write your code in UTF-8, +you can use the C.) The C and C pragmata are +available since Perl 5.6.0. =head2 System Resources @@ -808,6 +812,7 @@ are a few of the more popular Unix flavors: dgux dgux AViiON-dgux DYNIX/ptx dynixptx i386-dynixptx FreeBSD freebsd freebsd-i386 + Haiku haiku BePC-haiku Linux linux arm-linux Linux linux i386-linux Linux linux i586-linux @@ -815,7 +820,6 @@ are a few of the more popular Unix flavors: HP-UX hpux PA-RISC1.1 IRIX irix irix Mac OS X darwin darwin - MachTen PPC machten powerpc-machten NeXT 3 next next-fat NeXT 4 next OPENSTEP-Mach openbsd openbsd i386-openbsd @@ -928,7 +932,6 @@ and L. =item * 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. =item * @@ -1031,10 +1034,6 @@ MacPerl Development, http://dev.macperl.org/ . =item * -The MacPerl Pages, http://www.macperl.com/ . - -=item * - The MacPerl mailing lists, http://lists.perl.org/ . =item * @@ -1159,11 +1158,18 @@ a VMS format directory, then C should return F, and again with the optionally the exact case. RMS had an eight level limit on directory depths from any rooted logical -(allowing 16 levels overall) prior to VMS 7.2. Hence -C is a valid directory specification but -C is not. F authors might -have to take this into account, but at least they can refer to the former -as C. +(allowing 16 levels overall) prior to VMS 7.2, and even with versions of +VMS on VAX up through 7.3. Hence C is a +valid directory specification but C is +not. F authors might have to take this into account, but at +least they can refer to the former as C. + +Pumpkings and module integrators can easily see whether files with too many +directory levels have snuck into the core by running the following in the +top-level source directory: + + $ perl -ne "$_=~s/\s+.*//; print if scalar(split /\//) > 8;" < MANIFEST + The VMS::Filespec module, which gets installed as part of the build process on VMS, is a pure Perl module that can easily be installed on @@ -1219,9 +1225,7 @@ F (installed as L), L =item * -vmsperl list, majordomo@perl.org - -(Put the words C in message body.) +vmsperl list, vmsperl-subscribe@perl.org =item * @@ -1235,19 +1239,20 @@ 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: - C<< $ perl -ne "print if /perl_setup/i" >system>notices >> - C<< $ perl -ne "print if /perl_setup/i" /system/notices >> + $ perl -ne "print if /perl_setup/i" >system>notices + $ perl -ne "print if /perl_setup/i" /system/notices or even a mixture of both as in: - C<< $ perl -ne "print if /perl_setup/i" >system/notices >> + $ 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 delimiting character, VOS files, directories, or links whose names 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. +file names to 32 or fewer characters, file names cannot start with a +C<-> character, or contain any character matching C<< tr/ !%&'()*+;<>?// >> 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 @@ -1488,13 +1493,13 @@ in C<$^O> is "riscos" (because we don't like shouting). =head2 Other perls Perl has been ported to many platforms that do not fit into any of -the categories listed above. Some, such as AmigaOS, Atari MiNT, -BeOS, HP MPE/iX, QNX, Plan 9, and VOS, have been well-integrated -into the standard Perl source code kit. You may need to see the -F directory on CPAN for information, and possibly binaries, -for the likes of: aos, Atari ST, lynxos, riscos, Novell Netware, -Tandem Guardian, I (Yes, we know that some of these OSes may -fall under the Unix category, but we are not a standards body.) +the categories listed above. Some, such as AmigaOS, BeOS, HP MPE/iX, +QNX, Plan 9, and VOS, have been well-integrated into the standard +Perl source code kit. You may need to see the F directory +on CPAN for information, and possibly binaries, for the likes of: +aos, Atari ST, lynxos, riscos, Novell Netware, Tandem Guardian, +I (Yes, we know that some of these OSes may fall under the +Unix category, but we are not a standards body.) Some approximate operating system names and their C<$^O> values in the "OTHER" category include: @@ -1515,17 +1520,12 @@ Amiga, F (installed as L). =item * -Atari, F and Guido Flohr's web page -http://stud.uni-sb.de/~gufl0000/ - -=item * - Be OS, F =item * HP 300 MPE/iX, F and Mark Bixby's web page -http://www.bixby.org/mark/perlix.html +http://www.bixby.org/mark/porting.html =item * @@ -1568,6 +1568,11 @@ C<-r>, C<-w>, and C<-x> have a limited meaning only; directories and applications are executable, and there are no uid/gid considerations. C<-o> is not supported. (S) +C<-w> only inspects the read-only file attribute (FILE_ATTRIBUTE_READONLY), +which determines whether the directory can be deleted, not whether it can +be written to. Directories always have read and write access unless denied +by discretionary access control lists (DACLs). (S) + C<-r>, C<-w>, C<-x>, and C<-o> tell whether the file is accessible, which may not reflect UIC-based file protections. (VMS) @@ -1584,9 +1589,11 @@ C<-x>, C<-o>. (S, Win32, VMS, S) C<-b>, C<-c>, C<-k>, C<-g>, C<-p>, C<-u>, C<-A> are not implemented. (S) -C<-g>, C<-k>, C<-l>, C<-p>, C<-u>, C<-A> are not particularly meaningful. +C<-g>, C<-k>, C<-l>, C<-u>, C<-A> are not particularly meaningful. (Win32, VMS, S) +C<-p> is not particularly meaningful. (VMS, S) + C<-d> is true if passed a device spec without an explicit directory. (VMS) @@ -1845,7 +1852,10 @@ platforms. See L for portability information. =item gmtime -Same portability caveats as L. +In theory, gmtime() is reliable from -2**63 to 2**63-1. However, +because work arounds in the implementation use floating point numbers, +it will become inaccurate as the time gets larger. This is a bug and +will be fixed in the future. =item ioctl FILEHANDLE,FUNCTION,SCALAR @@ -1870,6 +1880,12 @@ and makes it exit immediately with exit status $sig. As in Unix, if $sig is 0 and the specified process exists, it returns true without actually terminating it. (Win32) +C will terminate the process specified by $pid and +recursively all child processes owned by it. This is different from +the Unix semantics, where the signal will be delivered to all +processes in the same process group as the process specified by +$pid. (Win32) + Is not supported for process identification number of 0 or negative numbers. (VMS) @@ -1880,17 +1896,19 @@ Not implemented. (S, MPE/iX, S) Link count not updated because hard links are not quite that hard (They are sort of half-way between hard and soft links). (AmigaOS) -Hard links are implemented on Win32 (Windows NT and Windows 2000) -under NTFS only. +Hard links are implemented on Win32 under NTFS only. They are +natively supported on Windows 2000 and later. On Windows NT they +are implemented using the Windows POSIX subsystem support and the +Perl process will need Administrator or Backup Operator privileges +to create hard links. Available on 64 bit OpenVMS 8.2 and later. (VMS) =item localtime -Because Perl currently relies on the native standard C localtime() -function, it is only safe to use times between 0 and (2**31)-1. Times -outside this range may result in unexpected behavior depending on your -operating system's implementation of localtime(). +localtime() has the same range as L, but because time zone +rules change its accuracy for historical and future times may degrade +but usually by no more than an hour. =item lstat @@ -1918,10 +1936,6 @@ open to C<|-> and C<-|> are unsupported. (S, Win32, S) Opening a process does not automatically flush output handles on some platforms. (SunOS, Solaris, HP-UX) -=item pipe - -Very limited functionality. (MiNT) - =item readlink Not implemented. (Win32, VMS, S) @@ -1983,7 +1997,7 @@ be implemented even in UNIX platforms. =item socketpair -Not implemented. (Win32, S, VOS, VM/ESA) +Not implemented. (S, VOS, VM/ESA) Available on 64 bit OpenVMS 8.2 and later. (VMS) @@ -2013,9 +2027,17 @@ meaningful and will differ between stat calls on the same file. (os2) some versions of cygwin when doing a stat("foo") and if not finding it may then attempt to stat("foo.exe") (Cygwin) +On Win32 stat() needs to open the file to determine the link count +and update attributes that may have been changed through hard links. +Setting ${^WIN32_SLOPPY_STAT} to a true value speeds up stat() by +not performing this operation. (Win32) + =item symlink -Not implemented. (Win32, VMS, S) +Not implemented. (Win32, S) + +Implemented on 64 bit VMS 8.3. VMS requires the symbolic link to be in Unix +syntax if it is intended to resolve to a valid path. =item syscall @@ -2051,11 +2073,6 @@ the child program uses a compatible version of the emulation library. I will call the native command line direct and no such emulation of a child Unix program will exists. Mileage B vary. (S) -Far from being POSIX compliant. Because there may be no underlying -/bin/sh tries to work around the problem by forking and execing the -first token in its argument string. Handles basic redirection -("<" or ">") on its own behalf. (MiNT) - Does not automatically flush output handles on some platforms. (SunOS, Solaris, HP-UX) @@ -2123,7 +2140,7 @@ Not useful. (S) 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 +available at http://www.cpan.org/src/ AIX BeOS @@ -2212,7 +2229,6 @@ of any trouble. Greenhills ISC MachTen 68k - MiNT MPC NEWS-OS NextSTEP @@ -2255,7 +2271,7 @@ http://www.cpan.org/ports/index.html for binary distributions. 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, L, L,