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 Chapters 14 through 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
fork function, standard on POSIX systems, but few others.
When we needed structured files, we picked the convenient Unix /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 who (1). These were merely chosen to illustrate the principles - the principles work whether or not your system has these files and programs.