This book was developed using Perl release 5.004_04. That means major release 5, minor release 4, and patch level 4. We tested most programs and examples under BSD, Linux, and SunOS, but that doesn’t mean they’ll only work on those systems. Perl was designed for platform independence. When you use Perl as a general-purpose programming language, employing basic operations like variables, patterns, subroutines, and high-level I/O, your program should work the same everywhere that Perl runs—which is just about everywhere. The first two thirds of this book uses Perl for general-purpose programming.
Perl was originally conceived as a high-level, cross-platform language for systems programming. Although it has long since expanded beyond its original domain, Perl continues to be heavily used for systems programming, both on its native Unix systems and elsewhere. Most recipes in Chapter 14 through Chapter 18 deal with classic systems programming. For maximum portability in this area, we’ve mainly focused on open systems as defined by POSIX, the Portable Operating System Interface, which includes nearly every form of Unix and numerous other systems as well. Most recipes should run with little or no modification on any POSIX system.
You can still use Perl for systems programming work even on non-POSIX systems by using vendor-specific modules, but these are not covered in this book. That’s because they’re not portable—and to be perfectly honest, because the authors have no such systems at their disposal. Consult the documentation that came with your port of Perl for any proprietary modules that may have been included.
But don’t worry. Many recipes for systems programming should
work on non-POSIX systems as well, especially those dealing with
databases, networking, and web interaction. That’s because the
modules used for those areas hide platform dependencies. The
principal exception is those few recipes and programs that rely upon
multitasking constructs, notably the powerful
function, standard on POSIX systems, but few others.
When we needed structured files, we picked the convenient
/etc/passwd database; when we needed a text
file to read, we picked
/etc/motd ; and when we
needed a program to produce output, we picked
(1). These were merely chosen to illustrate the
principles—the principles work whether or not your system has
these files and programs.