Perl 5.8.4 for OpenVMS VAX 7.3 -- examples and tests, 30-SEP-2026
==================================================================

Douglas P. Fields, Jr. (symbolics@lisp.engineer)

Small programs and tests for an installed kit, each with the output to
expect. Send every file as TEXT (FTP "ascii"). Run them as an ordinary
user, in a directory of your own, after

  $ @SYS$COMMON:[SYSLIB.PERL584]PERL_SETUP.COM

basic/
  RUN_TEST.COM      Runs SEMANTICS.PL (22 checks: hashes, regexes,
                    sprintf, sort, closures, file I/O, IO::File) and
                    BACKUP_VERDICT.PL on the four *.LOG fixtures. Three
                    of the fixtures are meant to be rejected, so three
                    "%SYSTEM-F-ABORT, abort" lines are normal. The final
                    status is 1. EXPECTED.TXT has the expected output
                    (process IDs, times and the node name differ).
  EXTENSIONS.PL     PERL EXTENSIONS.PL: 16 "ok" lines. POSIX, Fcntl,
                    Data::Dumper, Digest::MD5, Encode, List::Util,
                    Storable and Time::HiRes load from the installed tree
                    and work.

programs/
  RUN_EXAMPLES.COM  Runs the three programs and checks their results from
                    DCL. Expected: EXPECTED_EXAMPLES.TXT, byte for byte.
  DCLSYM.PL         Reads and sets DCL symbols (VMS::DCLsym).
  RECORDS.PL        Writes and reads fixed- and variable-length RMS
                    record files (VMS::Stdio::vmsopen).
  VERSIONS.PL       Lists every version of every file in a directory
                    (glob "*.*;*") and converts file names between VMS
                    and Unix form (VMS::Filespec).

overflow/
  RUN_OVERFLOW.COM  Runs the 33 cases of OVERFLOW.PL, each in its own
                    image. Expected: EXPECTED_V2.TXT (32 cases run; case
                    33 is an overflow outside any eval, which must end
                    Perl with a Perl error, shown as "FAULT" with the
                    exit status %X00018292). The limits are computed at
                    run time from POSIX::DBL_MAX.
  UNPATCHED_VAX60.TXT  The same test against Perl 5.8.4 as released, on a
                    VAXstation 4000/60: 6 of 33 cases ran, 27 killed the
                    image.

fpe/
  SAFETYNET.PL      PERL SAFETYNET.PL 1000: seven checks that a floating
                    fault becomes a Perl error eval can catch (1000 of
                    them in a loop), then one fault outside eval, which
                    must end the script with
                      Reserved floating point operand in unpack at ...
  SIGFPE.PL, FPE_WATCHDOG.COM
                    A script that sets $SIG{FPE} and then overflows. Run
                    it only through FPE_WATCHDOG.COM as a batch job with
                    a CPU limit (the header says how): Perl 5.8.4 as
                    released loops forever here.
  MATHOVF.C, FPEJMP.C, FPEJMP2.C
                    The C experiments behind the patch: what the C
                    library does on overflow, and when a VMS condition
                    handler may longjmp.

bench/
  BENCH.PL          PERL BENCH.PL 5: five workloads timed by CPU, each
                    with a checksum. BENCH_VSIM1.TXT: the runs on a
                    simulated MicroVAX 3900, with and without DEBUGGING.

Names in the files: VAX60 is my VAXstation 4000/60 and VSIM1 a simulated
MicroVAX 3900. SEMANTICS.PL uses "VAX60" only as a test string, so it
runs anywhere. "AGENT_MISTAKES" in EXPECTED.TXT is a notes file of mine.
