X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlport.pod;h=3b11a4f45eeebe8403908636098ee4db99a0e852;hb=ba370e9b8a212c313d985163053c7ed938fcae22;hp=c977064ccdd5ce38d814dd4edf86bf88ca4d5a70;hpb=6d7381134aa8fec077b679a5dc9d49b6e324e1df;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlport.pod b/pod/perlport.pod index c977064..3b11a4f 100644 --- a/pod/perlport.pod +++ b/pod/perlport.pod @@ -352,6 +352,25 @@ file already tied or opened; C or C it first. Don't open the same file more than once at a time for writing, as some operating systems put mandatory locks on such files. +Don't assume that write/modify permission on a directory gives the +right to add or delete files/directories in that directory. That is +filesystem specific: in some filesystems you need write/modify +permission also (or even just) in the file/directory itself. In some +filesystems (AFS, DFS) the permission to add/delete directory entries +is a completely separate permission. + +Don't assume that a single C completely gets rid of the file: +some filesystems (most notably the ones in VMS) have versioned +filesystems, and unlink() removes only the most recent one (it doesn't +remove all the versions because by default the native tools on those +platforms remove just the most recent version, too). The portable +idiom to remove all the versions of a file is + + 1 while unlink "file"; + +This will terminate if the file is undeleteable for some reason +(protected, not there, and so on). + Don't count on a specific environment variable existing in C<%ENV>. Don't count on C<%ENV> entries being case-sensitive, or even case-preserving. Don't try to clear %ENV by saying C<%ENV = ();>, or, @@ -404,6 +423,14 @@ simple, platform-independent mailing. The Unix System V IPC (C) is not available even on all Unix platforms. +Do not use either the bare result of C or +bare v-strings (such as C) to represent IPv4 addresses: +both forms just pack the four bytes into network order. That this +would be equal to the C language C struct (which is what the +socket code internally uses) is not guaranteed. To be portable use +the routines of the Socket extension, such as C, +C, and C. + The rule of thumb for portable code is: Do it all in portable Perl, or use a module (that may internally implement it with platform-specific code, but expose a common interface). @@ -532,7 +559,7 @@ often happens when tests spawn off other processes or call external programs to aid in the testing, or when (as noted above) the tests assume certain things about the filesystem and paths. Be careful not to depend on a specific output style for errors, such as when -checking C<$!> after an system call. Some platforms expect a certain +checking C<$!> after a system call. Some platforms expect a certain output format, and perl on those platforms may have been adjusted accordingly. Most specifically, don't anchor a regex when testing an error value. @@ -663,17 +690,22 @@ often assume nothing about their data. The C<$^O> variable and the C<$Config{archname}> values for various DOSish perls are as follows: - OS $^O $Config{'archname'} - -------------------------------------------- - MS-DOS dos - PC-DOS dos - OS/2 os2 - Windows 95 MSWin32 MSWin32-x86 - Windows 98 MSWin32 MSWin32-x86 - Windows NT MSWin32 MSWin32-x86 - Windows NT MSWin32 MSWin32-ALPHA - Windows NT MSWin32 MSWin32-ppc - Cygwin cygwin + OS $^O $Config{archname} ID Version + -------------------------------------------------------- + MS-DOS dos ? + PC-DOS dos ? + OS/2 os2 ? + Windows 3.1 ? ? 0 3 01 + Windows 95 MSWin32 MSWin32-x86 1 4 00 + Windows 98 MSWin32 MSWin32-x86 1 4 10 + Windows ME MSWin32 MSWin32-x86 1 ? + Windows NT MSWin32 MSWin32-x86 2 4 xx + Windows NT MSWin32 MSWin32-ALPHA 2 4 xx + Windows NT MSWin32 MSWin32-ppc 2 4 xx + Windows 2000 MSWin32 MSWin32-x86 2 5 xx + Windows XP MSWin32 MSWin32-x86 2 ? + Windows CE MSWin32 ? 3 + Cygwin cygwin ? The various MSWin32 Perl's can distinguish the OS they are running on via the value of the fifth element of the list returned from @@ -1384,6 +1416,17 @@ Implemented via Spawn. (VM/ESA) Does not automatically flush output handles on some platforms. (SunOS, Solaris, HP-UX) +=item exit EXPR + +=item exit + +Emulates UNIX exit() (which considers C to indicate an error) by +mapping the C<1> to SS$_ABORT (C<44>). This behavior may be overridden +with the pragma C. As with the CRTL's exit() +function, C is also mapped to an exit status of SS$_NORMAL +(C<1>); this mapping cannot be overridden. Any other argument to exit() +is used directly as Perl's exit status. (VMS) + =item fcntl FILEHANDLE,FUNCTION,SCALAR Not implemented. (Win32, VMS) @@ -1529,7 +1572,7 @@ Not implemented. (Plan9, Win32) =item getsockopt SOCKET,LEVEL,OPTNAME -Not implemented. (S, Plan9) +Not implemented. (Plan9) =item glob EXPR @@ -1615,11 +1658,11 @@ Not implemented. (Win32, VMS, S) =item select RBITS,WBITS,EBITS,TIMEOUT -Only implemented on sockets. (Win32) +Only implemented on sockets. (Win32, VMS) Only reliable on sockets. (S) -Note that the C form is generally portable. +Note that the C