This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Document CVf_UNIQUE flag better
[perl5.git] / pod / perlport.pod
index 1702d6e..f78e019 100644 (file)
@@ -192,8 +192,8 @@ 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
+    LF  eq  \025  eq  \x15  eq  \cU  eq  chr(21)  eq  CP-1047 21
+    LF  eq  \045  eq  \x25  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
 
@@ -487,6 +487,42 @@ To convert $Config{perlpath} to a file pathname, say:
   if ($^O ne 'VMS')
      {$thisperl .= $Config{_exe} unless $thisperl =~ m/$Config{_exe}$/i;}
 
+=head2 Networking
+
+Don't assume that you can reach the public Internet.
+
+Don't assume that there is only one way to get through firewalls
+to the public Internet.
+
+Don't assume that you can reach outside world through any other port
+than 80, or some web proxy.  ftp is blocked by many firewalls.
+
+Don't assume that you can send email by connecting to the local SMTP port.
+
+Don't assume that you can reach yourself or any node by the name
+'localhost'.  The same goes for '127.0.0.1'.  You will have to try both.
+
+Don't assume that the host has only one network card, or that it
+can't bind to many virtual IP addresses.
+
+Don't assume a particular network device name.
+
+Don't assume a particular set of ioctl()s will work.
+
+Don't assume that you can ping hosts and get replies.
+
+Don't assume that any particular port (service) will respond.
+
+Don't assume that Sys::Hostname() (or any other API or command)
+returns either a fully qualified hostname or a non-qualified hostname:
+it all depends on how the system had been configured.  Also remember
+things like DHCP and NAT-- the hostname you get back might not be very
+useful.
+
+All the above "don't":s may look daunting, and they are -- but the key
+is to degrade gracefully if one cannot reach the particular network
+service one wants.  Croaking or hanging do not look very professional.
+
 =head2 Interprocess Communication (IPC)
 
 In general, don't directly access the system in code meant to be
@@ -1489,12 +1525,6 @@ suffixes.  C<-S> is meaningless.  (Win32)
 C<-x> (or C<-X>) determine if a file has an executable file type.
 (S<RISC OS>)
 
-=item alarm SECONDS
-
-=item alarm
-
-Not implemented. (Win32)
-
 =item binmode FILEHANDLE
 
 Meaningless.  (S<Mac OS>, S<RISC OS>)
@@ -2125,7 +2155,7 @@ available at http://www.cpan.org/src/index.html
         ReliantUNIX     (formerly SINIX)
         OpenBSD
         OpenVMS         (formerly VMS)
-        Open UNIX       (formerly Unixware) (since Perl 5.8.1/5.9.0)
+        Open UNIX       (Unixware) (since Perl 5.8.1/5.9.0)
         OS/2
         OS/400          (using the PASE) (since Perl 5.8.1/5.9.0)
         PowerUX
@@ -2233,7 +2263,7 @@ http://www.cpan.org/ports/index.html for binary distributions.
 L<perlaix>, L<perlamiga>, L<perlapollo>, L<perlbeos>, L<perlbs2000>,
 L<perlce>, L<perlcygwin>, L<perldgux>, L<perldos>, L<perlepoc>,
 L<perlebcdic>, L<perlfreebsd>, L<perlhurd>, L<perlhpux>, L<perlirix>,
-L<perlmachten>, L<perlmacos>, L<perlmint>, L<perlmpeix>,
+L<perlmachten>, L<perlmacos>, L<perlmacosx>, L<perlmint>, L<perlmpeix>,
 L<perlnetware>, L<perlos2>, L<perlos390>, L<perlos400>,
 L<perlplan9>, L<perlqnx>, L<perlsolaris>, L<perltru64>,
 L<perlunicode>, L<perlvmesa>, L<perlvms>, L<perlvos>,