1PERLMPEIX(1)           Perl Programmers Reference Guide           PERLMPEIX(1)
2
3
4

NAME

6       perlmpeix - Perl/iX for HP e3000 MPE
7

SYNOPSIS

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

NOTE

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

What's New in Perl for MPE/iX

18       January 12, 2006
19
20       ·   Updated for perl-5.8.8 and perl-5.9.3 by Ken Hirsch.
21
22           Simplified the build process by using the MPEAUTOCONF functionality
23           in Mark Klein's ld.
24
25           If you build this from scratch, make sure you have a version of ld
26           which supports it.  In the shell, type
27
28             ld --help
29               and look for AUTOCONF or MPEAUTOCONF near the bottom
30
31             or do this:
32             ld --help 2>&1 | grep AUTOCONF
33
34           If you see don't see AUTOCONF or MPEAUTOCONF, make sure you get a
35           new version.
36
37           You also do not have to use mpeix/relink after building, so the
38           recommend sequence is:
39
40             ./Configure -de
41
42                 # or ./Configure -de -Dusedevel
43                 # if you're building a development version
44
45             make
46             make test
47                # if you run this in a job, do "make test_notty"
48
49             make install
50
51           Be prepared for a wait. These take much longer on MPE/iX than on a
52           Unix system, because of a slow forking, mostly.  On a lightly-
53           loaded HP3000 Series 979 running MPE/iX 7.5:
54
55               Configure: 1 hour
56               make:      1 hour 15 minutes
57               make test  1 hour 45 minutes
58
59           Various socket problems were fixed in mpeix.c.
60
61           Mark Klein provided a fixed sigsetjmp (that works with dynamic
62           libraries) in mpeix_setjmp.c
63
64       June 1, 2000
65
66       ·   Rebuilt to be compatible with mod_perl.  If you plan on using
67           mod_perl, you MUST download and install this version of Perl/iX!
68
69       ·   uselargefiles="undef": not available in MPE for POSIX files yet.
70
71       ·   Now bundled with various add-on packages:
72
73           ·       libnet (as seen on CPAN)
74
75           ·       libwww-perl (LWP) which lets Perl programs behave like web
76                   browsers:
77
78           ·       mod_perl (just the perl portion; the actual DSO will be
79                   released soon with Apache/iX 1.3.12 from bixby.org).  This
80                   module allows you to write high performance persistent Perl
81                   CGI scripts and all sorts of cool things.
82                   (<http://perl.apache.org/>)
83
84                   and much much more hiding under /PERL/PUB/.cpan/
85
86           ·       The CPAN module now works for automatic downloading and
87                   installing of add-on packages:
88
89                       1. export FTP_PASSIVE=1
90                       2. perl -MCPAN -e shell
91                       3. Ignore any terminal I/O related complaints!
92
93                   (<http://search.cpan.org/dist/CPAN/>)
94
95       May 20, 2000
96
97       ·   Updated to version 5.6.0.  Builds straight out of the box on
98           MPE/iX.
99
100       ·   Perl's getpwnam() function which had regressed to being
101           unimplemented on MPE is now implemented once again.
102
103       September 17, 1999
104
105       ·   Migrated from cccd.edu to bixby.org.
106

Welcome to Perl/iX

108       This is the official home page for the HP e3000 MPE/iX (
109       <http://www.hp.com/go/e3000> ) port of the Perl scripting language (
110       <http://www.perl.com/> ) which gives you all of the power of C, awk,
111       sed, and sh in a single language. Check here for the latest news,
112       implemented functionality, known bugs, to-do list, etc. Status reports
113       about major milestones will also be posted to the HP3000-L mailing list
114       ( http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU
115       <http://www.lsoft.com/scripts/wl.exe?SL1=HP3000-L&H=RAVEN.UTC.EDU> )
116       and its associated gatewayed newsgroup comp.sys.hp.mpe.
117
118       I'm doing this port because I can't live without Perl on the Unix
119       machines that I administer, and I want to have the same power available
120       to me on MPE.
121
122       Please send your comments, questions, and bug reports directly to me,
123       Mark Bixby ( <http://www.bixby.org/mark/> ). Or just post them to
124       HP3000-L.
125
126       The platform I'm using to do this port is an HP 3000 957RX running
127       MPE/iX 6.0 and using the GNU gcc C compiler (
128       <http://jazz.external.hp.com/src/gnu/gnuframe.html> ).
129
130       The combined porting wisdom from all of my ports can be found in my
131       MPE/iX Porting Guide (<http://www.bixby.org/mark/porting.html>).
132
133       IMPORTANT NOTICE: Yes, I do work for the HP CSY R&D lab, but ALL of the
134       software you download from bixby.org is my personal freeware that is
135       NOT supported by HP.
136

System Requirements for Perl/iX

138       ·   MPE/iX 5.5 or later. This version of Perl/iX does NOT run on MPE/iX
139           5.0 or earlier, nor does it run on "classic" MPE/V machines.
140
141       ·   If you wish to recompile Perl, you must install both GNUCORE and
142           GNUGCC from jazz
143           (<http://jazz.external.hp.com/src/gnu/gnuframe.html>).
144
145       ·   Perl/iX will be happier on MPE/iX 5.5 if you install the MPEKX40B
146           extended POSIX filename characters patch, but this is optional.
147
148       ·   Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to
149           prevent Perl/iX from dying with an unresolved external reference to
150           _getenv_libc.
151
152       ·   If you will be compiling Perl/iX yourself, you will also need
153           Syslog/iX ( <http://www.bixby.org/mark/syslogix.html> ) and the
154           /BIND/PUB/include and /BIND/PUB/lib portions of BIND/iX (
155           <http://www.bixby.org/mark/bindix.html> ).
156

How to Obtain Perl/iX

158       1.  Download Perl using either FTP.ARPA.SYS or some other client
159
160       2.  Extract the installation script
161
162       3.  Edit the installation script
163
164       4.  Run the installation script
165
166       5.  Convert your *.a system archive libraries to *.sl shared libraries
167
168       Download Perl using FTP.ARPA.SYS from your HP 3000 (the preferred
169       method).....
170
171           :HELLO MANAGER.SYS
172           :XEQ FTP.ARPA.SYS
173           open ftp.bixby.org
174           anonymous
175           your@email.address
176           bytestream
177           cd /pub/mpe
178           get perl-5.6.0-mpe.tar.Z /tmp/perl.tar.Z;disc=2147483647
179           exit
180
181       .....Or download using some other generic web or ftp client (the
182       alternate method)
183
184       Download the following files (make sure that you use "binary mode" or
185       whatever client feature that is 8-bit clean):
186
187       ·   Perl from
188
189               http://www.bixby.org/ftp/pub/mpe/perl-5.6.0-mpe.tar.Z
190
191           or
192
193               ftp://ftp.bixby.org/pub/mpe/perl-5.6.0-mpe.tar.Z
194
195       ·   Upload those files to your HP 3000 in an 8-bit clean bytestream
196           manner to:
197
198               /tmp/perl.tar.Z
199
200       ·   Then extract the installation script (after both download methods)
201
202               :CHDIR /tmp
203               :XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL'
204
205       ·   Edit the installation script
206
207           Examine the accounting structure creation commands and modify if
208           necessary (adding additional capabilities, choosing a non-system
209           volume set, etc).
210
211               :XEQ VI.HPBIN.SYS /tmp/INSTALL
212
213       ·   Run the installation script.
214
215           The accounting structure will be created and then all files will be
216           extracted from the archive.
217
218               :XEQ SH.HPBIN.SYS /tmp/INSTALL
219
220       ·   Convert your *.a system archive libraries to *.sl shared libraries
221
222           You only have to do this ONCE on your MPE/iX 5.5 machine in order
223           to convert /lib/lib*.a and /usr/lib/lib*.a libraries to their *.sl
224           equivalents.  This step should not be necessary on MPE/iX 6.0 or
225           later machines because the 6.0 or later update process does it for
226           you.
227
228               :XEQ SH.HPBIN.SYS /PERL/PUB/LIBSHP3K
229

Perl/iX Distribution Contents Highlights

231       README
232           The file you're reading now.
233
234       INSTALL
235           Perl/iX Installation script.
236
237       LIBSHP3K
238           Script to convert *.a system archive libraries to *.sl shared
239           libraries.
240
241       PERL
242           Perl NMPRG executable.  A version-numbered backup copy also exists.
243           You might wish to "ln -s /PERL/PUB/PERL /usr/local/bin/perl".
244
245       .cpan/
246           Much add-on source code downloaded with the CPAN module.
247
248       lib/
249           Perl libraries, both core and add-on.
250
251       man/
252           Perl man page documentation.
253
254       public_html/feedback.cgi
255           Sample feedback CGI form written in Perl.
256
257       src/perl-5.6.0-mpe
258           Source code.
259

How to Compile Perl/iX

261       1.  cd src/perl-5.6.0-mpe
262
263       2.  Read the INSTALL file for the official instructions
264
265       3.  ./Configure -d
266
267       4.  make
268
269       5.  ./mpeix/relink
270
271       6.  make test (expect approximately 15 out of 11306 subtests to fail,
272           mostly due to MPE not supporting hard links, UDP socket problems,
273           and handling exit() return codes improperly)
274
275       7.  make install
276
277       8.  Optionally create symbolic links that point to the Perl executable,
278           i.e. ln -s /PERL/PUB/PERL /usr/local/bin/perl
279
280       The summary test results from "cd t; ./perl -I../lib harness":
281
282         Failed Test  Status Wstat Total Fail  Failed  List of failed
283         ---------------------------------------------------------------------------
284         io/fs.t                      29    8  27.59%  2-5, 7-9, 11
285         io/openpid.t                 10    1  10.00%  7
286         lib/io_sock.t                14    1   7.14%  13
287         lib/io_udp.t                  7    2  28.57%  3, 5
288         lib/posix.t                  27    1   3.70%  12
289         op/lex_assign.t             187    1   0.53%  13
290         op/stat.t                    58    1   1.72%  3
291         15 tests and 94 subtests skipped.
292         Failed 7/236 test scripts, 97.03% okay. 15/11306 subtests failed, 99.87% okay.
293

Getting Started with Perl/iX

295       Create your Perl script files with "#!/PERL/PUB/perl" (or an equivalent
296       symbolic link) as the first line.  Use the chmod command to make sure
297       that your script has execute permission. Run your script!
298
299       Be sure to take a look at the CPAN module list (
300       <http://www.cpan.org/CPAN.html> ). A wide variety of free Perl software
301       is available.  You can automatically download these packages by using
302       the CPAN module ( <http://search.cpan.org/dist/CPAN/> ).
303

MPE/iX Implementation Considerations

305       There some minor functionality issues to be aware of when comparing
306       Perl for Unix (Perl/UX) to Perl/iX:
307
308       ·   MPE gcc/ld doesn't properly support linking NMPRG executables
309           against NMXL dynamic libraries, so you must manually run
310           mpeix/relink after each re-build of Perl.
311
312       ·   Perl/iX File::Copy will use MPE's /bin/cp command to copy files by
313           name in order to preserve file attributes like file code.
314
315       ·   MPE (and thus Perl/iX) lacks support for setgrent(), endgrent(),
316           setpwent(), endpwent().
317
318       ·   MPE (and thus Perl/iX) lacks support for hard links.
319
320       ·   MPE requires GETPRIVMODE() in order to bind() to ports less than
321           1024.  Perl/iX will call GETPRIVMODE() automatically on your behalf
322           if you attempt to bind() to these low-numbered ports.  Note that
323           the Perl/iX executable and the PERL account do not normally have
324           CAP=PM, so if you will be bind()-ing to these privileged ports, you
325           will manually need to add PM capability as appropriate.
326
327       ·   MPE requires that you bind() to an IP address of zero.  Perl/iX
328           automatically replaces the IP address that you pass to bind() with
329           a zero.
330
331       ·   MPE requires GETPRIVMODE() in order to setuid().  There are too
332           many calls to setuid() within Perl/iX, so I have not attempted an
333           automatic GETPRIVMODE() solution similar to bind().
334

Known Perl/iX Bugs Under Investigation

336       None.
337

Perl/iX To-Do List

339       ·   Make setuid()/setgid() support work.
340
341       ·   Make sure that fcntl() against a socket descriptor is redirected to
342           sfcntl().
343
344       ·   Add support for Berkeley DB once I've finished porting Berkeley DB.
345
346       ·   Write an MPE XS extension library containing miscellaneous
347           important MPE functions like GETPRIVMODE(), GETUSERMODE(), and
348           sfcntl().
349

Perl/iX Change History

351       May 6, 1999
352
353       ·   Patch LBCJXT6A is required on MPE/iX 5.5 machines in order to
354           prevent Perl/iX from dying with an unresolved external reference to
355           _getenv_libc.
356
357       April 7, 1999
358
359       ·   Updated to version 5.005_03.
360
361       ·   The official source distribution once again compiles "straight out
362           of the box" for MPE.
363
364       ·   The current incarnation of the 5.5 POSIX filename extended
365           characters patch is now MPEKX40B.
366
367       ·   The LIBSHP3K *.a -> *.sl library conversion script is now included
368           as /PERL/PUB/LIBSHP3K.
369
370       November 20, 1998
371
372       ·   Updated to version 5.005_02.
373
374       ·   Fixed a DynaLoader bug that was unable to load symbols from
375           relative path name libraries.
376
377       ·   Fixed a .xs compilation bug where the mpeixish.sh include file
378           wasn't being installed into the proper directory.
379
380       ·   All bugfixes will be submitted back to the official Perl
381           developers.
382
383       ·   The current incarnation of the POSIX filename extended characters
384           patch is now MPEKXJ3A.
385
386       August 14, 1998
387
388       ·   The previous POSIX filename extended characters patch MPEKX44C has
389           been superseded by MPEKXB5A.
390
391       August 7, 1998
392
393       ·   The previous POSIX filename extended characters patch MPEKX76A has
394           been superseded by MPEKX44C.
395
396       July 28, 1998
397
398       ·   Updated to version 5.005_01.
399
400       July 23, 1998
401
402       ·   Updated to version 5.005 (production release).  The public freeware
403           sources are now 100% MPE-ready "straight out of the box".
404
405       July 17, 1998
406
407       ·   Updated to version 5.005b1 (public beta release).  The public
408           freeware sources are now 99.9% MPE-ready.  By installing and
409           testing this beta on your own HP3000, you will be helping to insure
410           that the final release of 5.005 will be 100% MPE-ready and 100% bug
411           free.
412
413       ·   My MPE binary release is now extracted using my standard INSTALL
414           script.
415
416       July 15, 1998
417
418       ·   Changed startperl to #!/PERL/PUB/perl so that Perl will recognize
419           scripts more easily and efficiently.
420
421       July 8, 1998
422
423       ·   Updated to version 5.004_70 (internal developer release) which is
424           now MPE-ready.  The next public freeware release of Perl should
425           compile "straight out of the box" on MPE.  Note that this version
426           of Perl/iX was strictly internal to me and never publicly released.
427           Note that [21]BIND/iX is now required (well, the include files and
428           libbind.a) if you wish to compile Perl/iX.
429
430       November 6, 1997
431
432       ·   Updated to version 5.004_04.  No changes in MPE-specific
433           functionality.
434
435       October 16, 1997
436
437       ·   Added Demos section to the Perl/iX home page so you can see some
438           sample Perl applications running on my 3000.
439
440       October 3, 1997
441
442       ·   Added System Requirements section to the Perl/iX home page just so
443           the prerequisites stand out more. Various other home page tweaks.
444
445       October 2, 1997
446
447       ·   Initial public release.
448
449       September 1997
450
451       ·   Porting begins.
452

AUTHOR

454       Mark Bixby, <http://www.bixby.org/mark/>
455
456
457
458perl v5.16.3                      2013-03-04                      PERLMPEIX(1)
Impressum