README.vos - Perl for Stratus VOS
This is a port of Perl version 5 to VOS. Perl is a scripting or macro language that is popular on many systems. See your local computer bookstore for a number of good books on Perl.
Note that there are two different implementations of POSIX.1 support on VOS. There is an alpha version of POSIX that is available from the Stratus anonymous ftp site (ftp://ftp.stratus.com/pub/vos/posix/alpha/alpha.html). There is a generally-available version of POSIX that comes with the VOS Standard C Compiler or VOS C runtime in VOS Release 14.3.0 or higher. This port of perl will compile and bind with either version of POSIX.
Most of the Perl features should work on VOS regardless of which version of POSIX that you are using. However, the alpha version of POSIX is missing a number of key functions, and therefore any attempt by perl.pm to call the following unimplemented POSIX functions will result in an error message and an immediate and fatal call to the VOS debugger. They are "dup", "fork", and "waitpid". The lack of these functions prevents you from starting VOS commands and grabbing their output in perl. The workaround is to run the commands outside of perl, then have perl process the output file. These functions are all available in the generally-available version of POSIX.
Before you can build Perl 5 on VOS, you need to have or acquire the following additional items.
The alpha version of POSIX.1 support is available on the Stratus FTP site. Login anonymously to ftp.stratus.com and get the file /pub/vos/posix/alpha/posix.save.evf.gz in binary file-transfer mode. Or use the Uniform Resource Locator (URL) ftp://ftp.stratus.com/pub/vos/alpha/posix.save.evf.gz from your web browser. Instructions for unbundling this file are at ftp://ftp.stratus.com/pub/vos/utility/utility.html. This is not a standard Stratus product.
In VOS Release 14.3.0, the generally-available version of POSIX.1 support is bundled with the VOS Standard C compiler (or Standard C Cross-Compiler). In VOS Release 14.4.0 or higher, it is also bundled with the VOS C Runtime. These are standard Stratus products.
To build perl 5, change to the "vos" subdirectory and type the command "compile_perl -processor X", where X is the processor type (mc68020, i80860, pa7100, pa8000) that you wish to use. Note that the generally-available version of POSIX.1 support is not available for the mc68020 or i80860 processors.
Use the "-version alpha" control argument to build perl with the alpha version of POSIX support, and use the "-version ga" control argument to build it with the generally-available version of POSIX. The default is "ga".
Use the "-compiler cc" control argument to build perl with the VOS Standard C compiler. Use the "-compiler gcc" control argument to build it with the GNU GCC compiler. The default is "cc".
You must have purchased the VOS Standard C Cross Compiler in order to compile perl for a processor type that is different from the processor type of the module.
Note that code compiled for the pa7100 processor type can execute on the PA7100, PA8000, PA8500 and PA8600 processors, and that code compiled for the pa8000 processor type can execute on the PA8000, PA8500 and PA8600 processors.
!copy_file vos>obj>perl.pm >system>ported>command_library>*
(If you wish to use both Perl version 4 and Perl version 5, you must give them different names; for example, perl.pm and perl5.pm).
!copy_dir lib >system>ported>perl>lib>5.7
>system>ported>perl>lib>5.7.68k >system>ported>perl>lib>5.7.860 >system>ported>perl>lib>5.7.7100 >system>ported>perl>lib>5.7.8000
Put architecture-dependent files into one of the following directories:
>system>ported>perl>lib>site>5.7.68k >system>ported>perl>lib>site>5.7.860 >system>ported>perl>lib>site>5.7.7100 >system>ported>perl>lib>site>5.7.8000
If perl is built with the alpha version of VOS POSIX.1 support and if it attempts to call an unimplemented VOS POSIX.1 function, it will print a fatal error message and enter the VOS debugger. This error is not recoverable. See vos_dummies.c for a list of the unimplemented POSIX.1 functions. To see what functions are unimplemented and what the error message looks like, compile and execute "test_vos_dummies.c".
This port of Perl version 5 to VOS prefers Unix-style, slash-separated pathnames over VOS-style greater-than-separated pathnames. VOS-style pathnames should work in most contexts, but if you have trouble, replace all greater-than characters by slash characters. Because the slash character is used as a pathname delimiter, Perl cannot process VOS pathnames containing a slash character in a directory or file name; these must be renamed.
This port of Perl also uses Unix-epoch date values internally. As long as you are dealing with ASCII character string representations of dates, this should not be an issue. The supported epoch is January 1, 1980 to January 17, 2038.
See the file pod/perlport.pod for more information about the VOS port of Perl.
I'm offering this port "as is". You can ask me questions, but I can't guarantee I'll be able to answer them. There are some excellent books available on the Perl language; consult a book seller.
Paul Green (Paul_Green@stratus.com)
July 4, 2001