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
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 yourself or any node by the name
+'localhost'. The same goes for '127.0.0.1'.
+
+Don't assume that any particular port (service) will respond.
+
+Don't assume that you can ping hosts and get replies.
+
=head2 Interprocess Communication (IPC)
In general, don't directly access the system in code meant to 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<gmtime> or
+C<localtime>.
+
=head2 Character sets and character encoding
Assume very little about character sets.
If you really want to be international, you should consider Unicode.
See L<perluniintro> and L<perlunicode> for more information.
+If you want to use non-ASCII bytes (outside the bytes 0x00..0x7f) in
+the "source code" of your code, to be portable you have to be explicit
+about what bytes they are. Someone might for example be using your
+code under a UTF-8 locale, in which case random native bytes might be
+illegal ("Malformed UTF-8 ...") This means that for example embedding
+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<bytes>
+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<encoding> pragma. (If you want to write your code in UTF-8,
+you can use either the C<utf8> pragma, or the C<encoding> pragma.)
+The C<bytes> and C<utf8> pragmata are available since Perl 5.6.0, and
+the C<encoding> pragma since Perl 5.8.0.
+
=head2 System Resources
If your code is destined for systems with severely constrained (or
Not implemented. (S<Mac OS>, Win32, VMS, VM/ESA)
+=item gethostbyname
+
+C<gethostbyname('localhost')> does not work everywhere: you may have
+to use C<gethostbyname('127.0.0.1')>. (S<Mac OS>, S<Irix 5>)
+
=item gethostent
Not implemented. (S<Mac OS>, Win32)
AIX
BeOS
+ BSD/OS (BSDi)
Cygwin
DG/UX
DOS DJGPP 1)
DYNIX/ptx
EPOC R5
FreeBSD
+ HI-UXMPP (Hitachi) (5.8.0 worked but we didn't know it)
HP-UX
IRIX
Linux
Mac OS Classic
- Mac OS X (Darwin)
+ Mac OS X (Darwin)
MPE/iX
NetBSD
NetWare
NonStop-UX
- ReliantUNIX (SINIX)
+ ReliantUNIX (formerly SINIX)
OpenBSD
- OpenVMS (VMS)
+ OpenVMS (formerly VMS)
+ 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
- POSIX-BC (BS2000)
+ POSIX-BC (formerly BS2000)
QNX
Solaris
SunOS 4
- SUPER-UX
- Tru64 UNIX (DEC OSF/1, Digital UNIX)
+ SUPER-UX (NEC)
+ Tru64 UNIX (formerly DEC OSF/1, Digital UNIX)
UNICOS
UNICOS/mk
UTS
VOS
Win95/98/ME/2K/XP 2)
WinCE
- z/OS (OS/390)
+ z/OS (formerly OS/390)
VM/ESA
1) in DOS mode either the DOS or OS/2 ports can be used