.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13 .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. | will give a .\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to .\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C' .\" expand to `' in nroff, nothing in troff, for use with C<>. .tr \(*W-|\(bv\*(Tr .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .\" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .hy 0 .if n .na .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "PERLMPEIX 1" .TH PERLMPEIX 1 "2002-11-24" "perl v5.8.0" "Perl Programmers Reference Guide" .SH "NAME" README.mpeix \- Perl/iX for HP e3000 MPE .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 4 \& http://www.bixby.org/mark/perlix.html \& http://jazz.external.hp.com/src/hp_freeware/perl/ \& Perl language for MPE \& Last updated June 2, 2000 @ 0400 UTC .Ve .SH "NOTE" .IX Header "NOTE" This is a podified version of the above-mentioned web page, podified by Jarkko Hietaniemi 2001\-Jan\-01. .SH "Binary distribution from HP" .IX Header "Binary distribution from HP" The simplest way to obtain Perl for the MPE/iX is to go either of these URLs and follow the instructions within. .PP http://jazz.external.hp.com/src/hp_freeware/perl/ http://www.bixby.org/mark/perlix.html .PP Use which ever one is more recent. .SH "What's New in Perl for MPE/iX" .IX Header "What's New in Perl for MPE/iX" June 1, 2000 .IP "\(bu" 4 Rebuilt to be compatible with mod_perl. If you plan on using mod_perl, you \s-1MUST\s0 download and install this version of Perl/iX! .IP "\(bu" 4 uselargefiles=\*(L"undef\*(R": not available in \s-1MPE\s0 for \s-1POSIX\s0 files yet. .IP "\(bu" 4 Now bundled with various add-on packages: .RS 4 .IP "\(bu" 8 libnet (as seen on \s-1CPAN\s0) .IP "\(bu" 8 libwww-perl (\s-1LWP\s0) which lets Perl programs behave like web browsers: .Sp .Vb 4 \& 1. #!/PERL/PUB/perl \& 2. use LWP::Simple; \& 3. $doc = get('http://www.bixby.org/mark/perlix.html'); # reads the \& web page into variable $doc .Ve .Sp (http://www.bixby.org/mark/perlix.html) .IP "\(bu" 8 mod_perl (just the perl portion; the actual \s-1DSO\s0 will be released soon with Apache/iX 1.3.12 from bixby.org). This module allows you to write high performance persistent Perl \s-1CGI\s0 scripts and all sorts of cool things. (http://perl.apache.org/) .Sp and much much more hiding under /PERL/PUB/.cpan/ .IP "\(bu" 8 The \s-1CPAN\s0 module now works for automatic downloading and installing of add-on packages: .Sp .Vb 3 \& 1. export FTP_PASSIVE=1 \& 2. perl -MCPAN -e shell \& 3. Ignore any terminal I/O related complaints! .Ve .Sp (http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html) .RE .RS 4 .RE .PP May 20, 2000 .IP "\(bu" 4 Updated to version 5.6.0. Builds straight out of the box on MPE/iX. .IP "\(bu" 4 Perl's \fIgetpwnam()\fR function which had regressed to being unimplemented on \s-1MPE\s0 is now implemented once again. .PP September 17, 1999 .IP "\(bu" 4 Migrated from cccd.edu to bixby.org. .SH "Welcome to Perl/iX" .IX Header "Welcome to Perl/iX" This is the official home page for the \s-1HP\s0 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 \s-1HP3000\-L\s0 mailing list ( http://www.lsoft.com/scripts/wl.exe?SL1=HP3000\-L&H=RAVEN.UTC.EDU ) and its associated gatewayed newsgroup comp.sys.hp.mpe. .PP 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 \s-1MPE\s0. .PP Please send your comments, questions, and bug reports directly to me, Mark Bixby ( http://www.bixby.org/mark/ ), by e\-mailing to mark@bixby.org. Or just post them to \s-1HP3000\-L\s0. .PP The platform I'm using to do this port is an \s-1HP\s0 3000 957RX running MPE/iX 6.0 and using the \s-1GNU\s0 gcc C compiler ( http://jazz.external.hp.com/src/gnu/gnuframe.html ). .PP 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). .PP \&\s-1IMPORTANT\s0 \s-1NOTICE:\s0 Yes, I do work for the \s-1HP\s0 \s-1CSY\s0 R&D lab, but \s-1ALL\s0 of the software you download from bixby.org is my personal freeware that is \s-1NOT\s0 supported by \s-1HP\s0. .SH "System Requirements for Perl/iX" .IX Header "System Requirements for Perl/iX" .IP "\(bu" 4 MPE/iX 5.5 or later. This version of Perl/iX does \s-1NOT\s0 run on MPE/iX 5.0 or earlier, nor does it run on \*(L"classic\*(R" \s-1MPE/V\s0 machines. .IP "\(bu" 4 If you wish to recompile Perl, you must install both \s-1GNUCORE\s0 and \&\s-1GNUGCC\s0 from jazz (http://jazz.external.hp.com/src/gnu/gnuframe.html). .IP "\(bu" 4 Perl/iX will be happier on MPE/iX 5.5 if you install the \s-1MPEKX40B\s0 extended \s-1POSIX\s0 filename characters patch, but this is optional. .IP "\(bu" 4 Patch \s-1LBCJXT6A\s0 is required on MPE/iX 5.5 machines in order to prevent Perl/iX from dying with an unresolved external reference to _getenv_libc. .IP "\(bu" 4 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 ). .SH "How to Obtain Perl/iX" .IX Header "How to Obtain Perl/iX" .IP "1." 4 Download Perl using either \s-1FTP\s0.ARPA.SYS or some other client .IP "2." 4 Extract the installation script .IP "3." 4 Edit the installation script .IP "4." 4 Run the installation script .IP "5." 4 Convert your *.a system archive libraries to *.sl shared libraries .PP Download Perl using \s-1FTP\s0.ARPA.SYS from your \s-1HP\s0 3000 (the preferred method)..... .PP .Vb 9 \& :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 .Ve .PP \&.....Or download using some other generic web or ftp client (the alternate method) .PP Download the following files (make sure that you use \*(L"binary mode\*(R" or whatever client feature that is 8\-bit clean): .IP "\(bu" 4 Perl from .Sp .Vb 1 \& http://www.bixby.org/ftp/pub/mpe/perl-5.6.0-mpe.tar.Z .Ve .Sp or .Sp .Vb 1 \& ftp://ftp.bixby.org/pub/mpe/perl-5.6.0-mpe.tar.Z .Ve .IP "\(bu" 4 Upload those files to your \s-1HP\s0 3000 in an 8\-bit clean bytestream manner to: .Sp .Vb 1 \& /tmp/perl.tar.Z .Ve .IP "\(bu" 4 Then extract the installation script (after both download methods) .Sp .Vb 2 \& :CHDIR /tmp \& :XEQ TAR.HPBIN.SYS 'xvfopz /tmp/perl.tar.Z INSTALL' .Ve .IP "\(bu" 4 Edit the installation script .Sp Examine the accounting structure creation commands and modify if necessary (adding additional capabilities, choosing a non-system volume set, etc). .Sp .Vb 1 \& :XEQ VI.HPBIN.SYS /tmp/INSTALL .Ve .IP "\(bu" 4 Run the installation script. .Sp The accounting structure will be created and then all files will be extracted from the archive. .Sp .Vb 1 \& :XEQ SH.HPBIN.SYS /tmp/INSTALL .Ve .IP "\(bu" 4 Convert your *.a system archive libraries to *.sl shared libraries .Sp You only have to do this \s-1ONCE\s0 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. .Sp .Vb 1 \& :XEQ SH.HPBIN.SYS /PERL/PUB/LIBSHP3K .Ve .SH "Perl/iX Distribution Contents Highlights" .IX Header "Perl/iX Distribution Contents Highlights" .IP "\s-1README\s0" 4 .IX Item "README" The file you're reading now. .IP "\s-1INSTALL\s0" 4 .IX Item "INSTALL" Perl/iX Installation script. .IP "\s-1LIBSHP3K\s0" 4 .IX Item "LIBSHP3K" Script to convert *.a system archive libraries to *.sl shared libraries. .IP "\s-1PERL\s0" 4 .IX Item "PERL" Perl \s-1NMPRG\s0 executable. A version-numbered backup copy also exists. You might wish to \*(L"ln \-s /PERL/PUB/PERL /usr/local/bin/perl\*(R". .IP ".cpan/" 4 .IX Item ".cpan/" Much add-on source code downloaded with the \s-1CPAN\s0 module. .IP "lib/" 4 .IX Item "lib/" Perl libraries, both core and add\-on. .IP "man/" 4 .IX Item "man/" Perl man page documentation. .IP "public_html/feedback.cgi" 4 .IX Item "public_html/feedback.cgi" Sample feedback \s-1CGI\s0 form written in Perl. .IP "src/perl\-5.6.0\-mpe" 4 .IX Item "src/perl-5.6.0-mpe" Source code. .SH "How to Compile Perl/iX" .IX Header "How to Compile Perl/iX" .IP "1." 4 cd src/perl\-5.6.0\-mpe .IP "2." 4 Read the \s-1INSTALL\s0 file for the official instructions .IP "3." 4 \&./Configure \-d .IP "4." 4 make .IP "5." 4 \&./mpeix/relink .IP "6." 4 make test (expect approximately 15 out of 11306 subtests to fail, mostly due to \s-1MPE\s0 not supporting hard links, \s-1UDP\s0 socket problems, and handling \fIexit()\fR return codes improperly) .IP "7." 4 make install .IP "8." 4 Optionally create symbolic links that point to the Perl executable, i.e. ln \-s /PERL/PUB/PERL /usr/local/bin/perl .PP The summary test results from \*(L"cd t; ./perl \-I../lib harness\*(R": .PP .Vb 11 \& 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. .Ve .SH "Getting Started with Perl/iX" .IX Header "Getting Started with Perl/iX" Create your Perl script files with \*(L"#!/PERL/PUB/perl\*(R" (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! .PP Be sure to take a look at the \s-1CPAN\s0 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 \s-1CPAN\s0 module ( http://theoryx5.uwinnipeg.ca/CPAN/data/perl/CPAN.html ). .SH "MPE/iX Implementation Considerations" .IX Header "MPE/iX Implementation Considerations" There some minor functionality issues to be aware of when comparing Perl for Unix (Perl/UX) to Perl/iX: .IP "\(bu" 4 \&\s-1MPE\s0 gcc/ld doesn't properly support linking \s-1NMPRG\s0 executables against \&\s-1NMXL\s0 dynamic libraries, so you must manually run mpeix/relink after each re-build of Perl. .IP "\(bu" 4 Perl/iX File::Copy will use \s-1MPE\s0's /bin/cp command to copy files by name in order to preserve file attributes like file code. .IP "\(bu" 4 \&\s-1MPE\s0 (and thus Perl/iX) lacks support for \fIsetgrent()\fR, \fIendgrent()\fR, \&\fIsetpwent()\fR, \fIendpwent()\fR. .IP "\(bu" 4 \&\s-1MPE\s0 (and thus Perl/iX) lacks support for hard links. .IP "\(bu" 4 \&\s-1MPE\s0 requires \s-1\fIGETPRIVMODE\s0()\fR in order to \fIbind()\fR to ports less than 1024. Perl/iX will call \s-1\fIGETPRIVMODE\s0()\fR automatically on your behalf if you attempt to \fIbind()\fR to these low-numbered ports. Note that the Perl/iX executable and the \s-1PERL\s0 account do not normally have CAP=PM, so if you will be \fIbind()\fR\-ing to these privileged ports, you will manually need to add \s-1PM\s0 capability as appropriate. .IP "\(bu" 4 \&\s-1MPE\s0 requires that you \fIbind()\fR to an \s-1IP\s0 address of zero. Perl/iX automatically replaces the \s-1IP\s0 address that you pass to \fIbind()\fR with a zero. .IP "\(bu" 4 If you use Perl/iX \fIfcntl()\fR against a socket it will fail, because \s-1MPE\s0 requires that you use \fIsfcntl()\fR instead. Perl/iX does not presently support \fIsfcntl()\fR. .IP "\(bu" 4 \&\s-1MPE\s0 requires \s-1\fIGETPRIVMODE\s0()\fR in order to \fIsetuid()\fR. There are too many calls to \fIsetuid()\fR within Perl/iX, so I have not attempted an automatic \&\s-1\fIGETPRIVMODE\s0()\fR solution similar to \fIbind()\fR. .SH "Known Perl/iX Bugs Under Investigation" .IX Header "Known Perl/iX Bugs Under Investigation" None. .SH "Perl/iX To-Do List" .IX Header "Perl/iX To-Do List" .IP "\(bu" 4 Make \fIsetuid()\fR/\fIsetgid()\fR support work. .IP "\(bu" 4 Make sure that \fIfcntl()\fR against a socket descriptor is redirected to \fIsfcntl()\fR. .IP "\(bu" 4 Add support for Berkeley \s-1DB\s0 once I've finished porting Berkeley \s-1DB\s0. .IP "\(bu" 4 Write an \s-1MPE\s0 \s-1XS\s0 extension library containing miscellaneous important \&\s-1MPE\s0 functions like \s-1\fIGETPRIVMODE\s0()\fR, \s-1\fIGETUSERMODE\s0()\fR, and \fIsfcntl()\fR. .SH "Perl/iX Change History" .IX Header "Perl/iX Change History" May 6, 1999 .IP "\(bu" 4 Patch \s-1LBCJXT6A\s0 is required on MPE/iX 5.5 machines in order to prevent Perl/iX from dying with an unresolved external reference to _getenv_libc. .PP April 7, 1999 .IP "\(bu" 4 Updated to version 5.005_03. .IP "\(bu" 4 The official source distribution once again compiles \*(L"straight out of the box\*(R" for \s-1MPE\s0. .IP "\(bu" 4 The current incarnation of the 5.5 \s-1POSIX\s0 filename extended characters patch is now \s-1MPEKX40B\s0. .IP "\(bu" 4 The \s-1LIBSHP3K\s0 *.a \-> *.sl library conversion script is now included as /PERL/PUB/LIBSHP3K. .PP November 20, 1998 .IP "\(bu" 4 Updated to version 5.005_02. .IP "\(bu" 4 Fixed a DynaLoader bug that was unable to load symbols from relative path name libraries. .IP "\(bu" 4 Fixed a .xs compilation bug where the mpeixish.sh include file wasn't being installed into the proper directory. .IP "\(bu" 4 All bugfixes will be submitted back to the official Perl developers. .IP "\(bu" 4 The current incarnation of the \s-1POSIX\s0 filename extended characters patch is now \s-1MPEKXJ3A\s0. .PP August 14, 1998 .IP "\(bu" 4 The previous \s-1POSIX\s0 filename extended characters patch \s-1MPEKX44C\s0 has been superseded by \s-1MPEKXB5A\s0. .PP August 7, 1998 .IP "\(bu" 4 The previous \s-1POSIX\s0 filename extended characters patch \s-1MPEKX76A\s0 has been superseded by \s-1MPEKX44C\s0. .PP July 28, 1998 .IP "\(bu" 4 Updated to version 5.005_01. .PP July 23, 1998 .IP "\(bu" 4 Updated to version 5.005 (production release). The public freeware sources are now 100% MPE-ready \*(L"straight out of the box\*(R". .PP July 17, 1998 .IP "\(bu" 4 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 \s-1HP3000\s0, you will be helping to insure that the final release of 5.005 will be 100% MPE-ready and 100% bug free. .IP "\(bu" 4 My \s-1MPE\s0 binary release is now extracted using my standard \s-1INSTALL\s0 script. .PP July 15, 1998 .IP "\(bu" 4 Changed startperl to #!/PERL/PUB/perl so that Perl will recognize scripts more easily and efficiently. .PP July 8, 1998 .IP "\(bu" 4 Updated to version 5.004_70 (internal developer release) which is now MPE\-ready. The next public freeware release of Perl should compile \&\*(L"straight out of the box\*(R" on \s-1MPE\s0. 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. .PP November 6, 1997 .IP "\(bu" 4 Updated to version 5.004_04. No changes in MPE-specific functionality. .PP October 16, 1997 .IP "\(bu" 4 Added Demos section to the Perl/iX home page so you can see some sample Perl applications running on my 3000. .PP October 3, 1997 .IP "\(bu" 4 Added System Requirements section to the Perl/iX home page just so the prerequisites stand out more. Various other home page tweaks. .PP October 2, 1997 .IP "\(bu" 4 Initial public release. .PP September 1997 .IP "\(bu" 4 Porting begins. .SH "AUTHOR" .IX Header "AUTHOR" Mark Bixby, mark@bixby.org