---
name: "perlmpeix"
section: "1"
platform: "linux"
package: "perl-doc"
version: "5.14.2-21+deb7u3"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/perlmpeix"
---

# perlmpeix(1)

Perl/iX for HP e3000 MPE

## NAME

README.mpeix - Perl/iX for HP e3000 MPE

## SYNOPSIS

```
   http://www.bixby.org/mark/perlix.html
   Perl language for MPE
   Last updated January 12, 2006 @ 2100 UTC
```

## NOTE

This is a podified version of what used to be on the above-mentioned web page, podified by Jarkko Hietaniemi 2001-Jan-01.

## What's New in Perl for MPE/iX

January 12, 2006

- •

  Updated for perl-5.8.8 and perl-5.9.3 by Ken Hirsch.

  Simplified the build process by using the MPEAUTOCONF functionality in Mark Klein's ld.

  If you build this from scratch, make sure you have a version of ld which supports it.  In the shell, type

  ```
    ld --help
      and look for AUTOCONF or MPEAUTOCONF near the bottom
    or do this:
    ld --help 2>&1 | grep AUTOCONF
  ```

  If you see don't see AUTOCONF or MPEAUTOCONF, make sure you get a new version.

  You also do not have to use mpeix/relink after building, so the recommend sequence is:

  ```
    ./Configure -de
        # or ./Configure -de -Dusedevel
        # if you're building a development version
    make
    make test
       # if you run this in a job, do "make test_notty"
    make install
  ```

  Be prepared for a wait. These take much longer on MPE/iX than on a Unix system, because of a slow forking, mostly.  On a lightly-loaded HP3000 Series 979 running MPE/iX 7.5:

  ```
      Configure: 1 hour
      make:      1 hour 15 minutes
      make test  1 hour 45 minutes
  ```

  Various socket problems were fixed in mpeix.c.

  Mark Klein provided a fixed sigsetjmp (that works with dynamic libraries) in mpeix\_setjmp.c

June 1, 2000

- •

  Rebuilt to be compatible with mod\_perl.  If you plan on using mod\_perl, you MUST download and install this version of Perl/iX!

- •

  uselargefiles="undef": not available in MPE for POSIX files yet.

- •

  Now bundled with various add-on packages:

  - •

    libnet (as seen on CPAN)

  - •

    libwww-perl (LWP) which lets Perl programs behave like web browsers:

  - •

    mod\_perl (just the perl portion; the actual DSO will be released soon with Apache/iX 1.3.12 from bixby.org).  This module allows you to write high performance persistent Perl CGI scripts and all sorts of cool things. (\<http://perl.apache.org/\>)

    and much much more hiding under /PERL/PUB/.cpan/

  - •

    The CPAN module now works for automatic downloading and installing of add-on packages:

    ```
        1. export FTP_PASSIVE=1
        2. perl -MCPAN -e shell
        3. Ignore any terminal I/O related complaints!
    ```

    (\<http://search.cpan.org/dist/CPAN/\>)

May 20, 2000

- •

  Updated to version 5.6.0.  Builds straight out of the box on MPE/iX.

- •

  Perl's *getpwnam()* function which had regressed to being unimplemented on MPE is now implemented once again.

September 17, 1999

- •

  Migrated from cccd.edu to bixby.org.

## Welcome to Perl/iX

This is the official home page for the HP e3000 MPE/iX ( \<http://www.hp.com/go/e3000\> ) port of the Perl scripting language ( \<http://www.perl.com/\> ) which gives you all of the power of C, awk, sed, and sh in a single language. Check here for the latest news, implemented functionality, known bugs, to-do list, etc. Status reports about major milestones will also be posted to the HP3000-L mailing list ( http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU \<http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU\> ) and its associated gatewayed newsgroup comp.sys.hp.mpe.

I'm doing this port because I can't live without Perl on the Unix machines that I administer, and I want to have the same power available to me on MPE.

Please send your comments, questions, and bug reports directly to me, Mark Bixby ( \<http://www.bixby.org/mark/\> ). Or just post them to HP3000-L.

The platform I'm using to do this port is an HP 3000 957RX running MPE/iX 6.0 and using the GNU gcc C compiler ( \<http://jazz.external.hp.com/src/gnu/gnuframe.html\> ).

The combined porting wisdom from all of my ports can be found in my MPE/iX Porting Guide (\<http://www.bixby.org/mark/porting.html\>).

IMPORTANT NOTICE: Yes, I do work for the HP CSY R&D lab, but ALL of the software you download from bixby.org is my personal freeware that is NOT supported by HP.

## System Requirements for Perl/iX

- •

  MPE/iX 5.5 or later. This version of Perl/iX does NOT run on MPE/iX 5.0 or earlier, nor does it run on "classic" MPE/V machines.

- •

  If you wish to recompile Perl, you must install both GNUCORE and GNUGCC from jazz (\<http://jazz.external.hp.com/src/gnu/gnuframe.html\>).

- •

  Perl/iX will be happier on MPE/iX 5.5 if you install the MPEKX40B extended POSIX filename characters patch, but this is optional.

- •

  Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to prevent Perl/iX from dying with an unresolved external reference to \_getenv\_libc.

- •

  If you will be compiling Perl/iX yourself, you will also need Syslog/iX ( \<http://www.bixby.org/mark/syslogix.html\> ) and the /BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX ( \<http://www.bixby.org/mark/bindix.html\> ).

## How to Obtain Perl/iX

- 1\.

  Download Perl using either FTP.ARPA.SYS or some other client

- 2\.

  Extract the installation script

- 3\.

  Edit the installation script

- 4\.

  Run the installation script

- 5\.

  Convert your \*.a system archive libraries to \*.sl shared libraries

Download Perl using FTP.ARPA.SYS from your HP 3000 (the preferred method).....

```
    :HELLO MANAGER.SYS
    :XEQ FTP.ARPA.SYS
    open ftp.bixby.org
    anonymous
    your@email.address
    bytestream
    cd /pub/mpe
    get perl-5.6.0-mpe.tar.Z /tmp/perl.tar.Z;disc=2147483647
    exit
```

.....Or download using some other generic web or ftp client (the alternate method)

Download the following files (make sure that you use "binary mode" or whatever client feature that is 8-bit clean):

- •

  Perl from

  ```
      http://www.bixby.org/ftp/pub/mpe/perl-5.6.0-mpe.tar.Z
  ```

  or

  ```
      ftp://ftp.bixby.org/pub/mpe/perl-5.6.0-mpe.tar.Z
  ```

- •

  Upload those files to your HP 3000 in an 8-bit clean bytestream manner to:

  ```
      /tmp/perl.tar.Z
  ```

- •

  Then extract the installation script (after both download methods)

  ```
      :CHDIR /tmp
      :XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL'
  ```

- •

  Edit the installation script

  Examine the accounting structure creation commands and modify if necessary (adding additional capabilities, choosing a non-system volume set, etc).

  ```
      :XEQ VI.HPBIN.SYS /tmp/INSTALL
  ```

- •

  Run the installation script.

  The accounting structure will be created and then all files will be extracted from the archive.

  ```
      :XEQ SH.HPBIN.SYS /tmp/INSTALL
  ```

- •

  Convert your \*.a system archive libraries to \*.sl shared libraries

  You only have to do this ONCE on your MPE/iX 5.5 machine in order to convert /lib/lib\*.a and /usr/lib/lib\*.a libraries to their \*.sl equivalents.  This step should not be necessary on MPE/iX 6.0 or later machines because the 6.0 or later update process does it for you.

  ```
      :XEQ SH.HPBIN.SYS /PERL/PUB/LIBSHP3K
  ```

## Perl/iX Distribution Contents Highlights

- README

  The file you're reading now.

- INSTALL

  Perl/iX Installation script.

- LIBSHP3K

  Script to convert \*.a system archive libraries to \*.sl shared libraries.

- PERL

  Perl NMPRG executable.  A version-numbered backup copy also exists.  You might wish to "ln -s /PERL/PUB/PERL /usr/local/bin/perl".

- .cpan/

  Much add-on source code downloaded with the CPAN module.

- lib/

  Perl libraries, both core and add-on.

- man/

  Perl man page documentation.

- public\_html/feedback.cgi

  Sample feedback CGI form written in Perl.

- src/perl-5.6.0-mpe

  Source code.

## How to Compile Perl/iX

- 1\.

  cd src/perl-5.6.0-mpe

- 2\.

  Read the INSTALL file for the official instructions

- 3\.

  ./Configure -d

- 4\.

  make

- 5\.

  ./mpeix/relink

- 6\.

  make test (expect approximately 15 out of 11306 subtests to fail, mostly due to MPE not supporting hard links, UDP socket problems, and handling *exit()* return codes improperly)

- 7\.

  make install

- 8\.

  Optionally create symbolic links that point to the Perl executable, i.e. ln -s /PERL/PUB/PERL /usr/local/bin/perl

The summary test results from "cd t; ./perl -I../lib harness":

```
  Failed Test  Status Wstat Total Fail  Failed  List of failed
  ---------------------------------------------------------------------------
  io/fs.t                      29    8  27.59%  2-5, 7-9, 11
  io/openpid.t                 10    1  10.00%  7
  lib/io_sock.t                14    1   7.14%  13
  lib/io_udp.t                  7    2  28.57%  3, 5
  lib/posix.t                  27    1   3.70%  12
  op/lex_assign.t             187    1   0.53%  13
  op/stat.t                    58    1   1.72%  3
  15 tests and 94 subtests skipped.
  Failed 7/236 test scripts, 97.03% okay. 15/11306 subtests failed, 99.87% okay.
```

## Getting Started with Perl/iX

Create your Perl script files with "#!/PERL/PUB/perl" (or an equivalent symbolic link) as the first line.  Use the chmod command to make sure that your script has execute permission. Run your script!

Be sure to take a look at the CPAN module list ( \<http://www.cpan.org/CPAN.html\> ). A wide variety of free Perl software is available.  You can automatically download these packages by using the CPAN module ( \<http://search.cpan.org/dist/CPAN/\> ).

## MPE/iX Implementation Considerations

There some minor functionality issues to be aware of when comparing Perl for Unix (Perl/UX) to Perl/iX:

- •

  MPE gcc/ld doesn't properly support linking NMPRG executables against NMXL dynamic libraries, so you must manually run mpeix/relink after each re-build of Perl.

- •

  Perl/iX File::Copy will use MPE's /bin/cp command to copy files by name in order to preserve file attributes like file code.

- •

  MPE (and thus Perl/iX) lacks support for *setgrent()*, *endgrent()*, *setpwent()*, *endpwent()*.

- •

  MPE (and thus Perl/iX) lacks support for hard links.

- •

  MPE requires *GETPRIVMODE()* in order to *bind()* to ports less than 1024. Perl/iX will call *GETPRIVMODE()* automatically on your behalf if you attempt to *bind()* to these low-numbered ports.  Note that the Perl/iX executable and the PERL account do not normally have CAP=PM, so if you will be *bind()*-ing to these privileged ports, you will manually need to add PM capability as appropriate.

- •

  MPE requires that you *bind()* to an IP address of zero.  Perl/iX automatically replaces the IP address that you pass to *bind()* with a zero.

- •

  MPE requires *GETPRIVMODE()* in order to *setuid()*.  There are too many calls to *setuid()* within Perl/iX, so I have not attempted an automatic *GETPRIVMODE()* solution similar to *bind()*.

## Known Perl/iX Bugs Under Investigation

None.

## Perl/iX To-Do List

- •

  Make *setuid()*/*setgid()* support work.

- •

  Make sure that *fcntl()* against a socket descriptor is redirected to *sfcntl()*.

- •

  Add support for Berkeley DB once I've finished porting Berkeley DB.

- •

  Write an MPE XS extension library containing miscellaneous important MPE functions like *GETPRIVMODE()*, *GETUSERMODE()*, and *sfcntl()*.

## Perl/iX Change History

May 6, 1999

- •

  Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to prevent Perl/iX from dying with an unresolved external reference to \_getenv\_libc.

April 7, 1999

- •

  Updated to version 5.005\_03.

- •

  The official source distribution once again compiles "straight out of the box" for MPE.

- •

  The current incarnation of the 5.5 POSIX filename extended characters patch is now MPEKX40B.

- •

  The LIBSHP3K \*.a -\> \*.sl library conversion script is now included as /PERL/PUB/LIBSHP3K.

November 20, 1998

- •

  Updated to version 5.005\_02.

- •

  Fixed a DynaLoader bug that was unable to load symbols from relative path name libraries.

- •

  Fixed a .xs compilation bug where the mpeixish.sh include file wasn't being installed into the proper directory.

- •

  All bugfixes will be submitted back to the official Perl developers.

- •

  The current incarnation of the POSIX filename extended characters patch is now MPEKXJ3A.

August 14, 1998

- •

  The previous POSIX filename extended characters patch MPEKX44C has been superseded by MPEKXB5A.

August 7, 1998

- •

  The previous POSIX filename extended characters patch MPEKX76A has been superseded by MPEKX44C.

July 28, 1998

- •

  Updated to version 5.005\_01.

July 23, 1998

- •

  Updated to version 5.005 (production release).  The public freeware sources are now 100% MPE-ready "straight out of the box".

July 17, 1998

- •

  Updated to version 5.005b1 (public beta release).  The public freeware sources are now 99.9% MPE-ready.  By installing and testing this beta on your own HP3000, you will be helping to insure that the final release of 5.005 will be 100% MPE-ready and 100% bug free.

- •

  My MPE binary release is now extracted using my standard INSTALL script.

July 15, 1998

- •

  Changed startperl to #!/PERL/PUB/perl so that Perl will recognize scripts more easily and efficiently.

July 8, 1998

- •

  Updated to version 5.004\_70 (internal developer release) which is now MPE-ready.  The next public freeware release of Perl should compile "straight out of the box" on MPE.  Note that this version of Perl/iX was strictly internal to me and never publicly released.  Note that \[21\]BIND/iX is now required (well, the include files and libbind.a) if you wish to compile Perl/iX.

November 6, 1997

- •

  Updated to version 5.004\_04.  No changes in MPE-specific functionality.

October 16, 1997

- •

  Added Demos section to the Perl/iX home page so you can see some sample Perl applications running on my 3000.

October 3, 1997

- •

  Added System Requirements section to the Perl/iX home page just so the prerequisites stand out more. Various other home page tweaks.

October 2, 1997

- •

  Initial public release.

September 1997

- •

  Porting begins.

## AUTHOR

Mark Bixby, \<http://www.bixby.org/mark/\>
