home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl502b.zip / README.os2 < prev   
Text File  |  1996-04-08  |  21KB  |  628 lines

  1.             Perl 5.002ß3 for OS/2.
  2.  
  3.         Copyright (c) 1989,1990,1991,1992,1993,1994  Larry Wall
  4.                        All rights reserved.
  5.  
  6.         OS/2 port Copyright (c) 1990, 1991, 1994-96
  7.            Raymond Chen, Kai Uwe Rommel, Andreas Kaiser
  8.                             
  9. Version 5 port (this package) by Andreas Kaiser <ak@ananke.s.bawue.de>
  10. (2:246/8506.9@fidonet).
  11.  
  12. To run the executables supplied with this file, you have to install the
  13. EMX runtime package emxrt.zip of version 0.9b1 or later.
  14.  
  15. The file emxrt.zip is available at ftp.rus.uni-stuttgart.de (the
  16. origin), ftp-os2.nmsu.edu and many other places.
  17.  
  18. The source code of the original Perl 5.0 distribution is not included
  19. here. You can get it at ftp://ftp.leo.org/.../perl5.002beta3.tar.gz
  20. (and many other places).
  21.  
  22. For documentation of Perl 5, look at the files into the directory tree
  23. "pod". For TeX or Postscript docs, get perlref-5.000.0.tar.gz (is a
  24. later one available?). A LaTeX and postscript reference card is
  25. available at
  26.   ftp.NL.net:/pub/comp/programming/languages/perl/perlref-5.000.0.tar.gz
  27.   prep.ai.mit.edu:/pub/gnu/perlref-5.000.0.tar.gz
  28.  
  29. Many REXX DLLs complement the features available by standard Perl,
  30. supporting system calls (YdbaUtil - RXU??.ZIP), xBase (RexxBase,
  31. shareware), serial I/O (RxAsync) and basic PM dialogs (VRexx). These
  32. packages can be found at many OS/2 FTP servers.
  33.  
  34. -----------------------------------------------------------------------------
  35. Installation:
  36. -------------
  37.  
  38. If you did not have HPFS up to now, this is the right time to reformat
  39. your filesystem(s)... While Perl itself does not require HPFS, a lot
  40. of Perl library files do. Or try EMXOPT=-t.
  41.  
  42. copy perl5.exe perl5x.exe `some PATH dir`
  43. copy os2\perlglob.exe `some PATH dir`
  44. copy perl5.dll `some LIBPATH dir`
  45.  
  46. set PERL5LIB=x:/your/own/perl/lib;y:/somewhere/perl5/lib
  47.  
  48. set PERL5LOAD=10 to leave the interpreter(s) preloaded in memory for
  49. 10 minutes. It may reduce the time required to load perl on subsequent
  50. invocations (but may significantly increase the load time at first
  51. invocation if the emxload daemon is not yet running).
  52.  
  53. The perl5 extension DLLs (POSIX_.DLL, REXX_.DLL, ...) do not need a
  54. LIBPATH entry.
  55.  
  56. Executables:
  57. ------------
  58.  
  59. perl5.exe,perl5.dll :    DynaLoader, REXX support, external DLLs
  60.  
  61.             No fork. Running a command via open() returns 1
  62.             instead of the child process id.
  63.  
  64.             Other modules supported via extension DLLs, no
  65.             builtins other than DynaLoader.
  66.  
  67. perl5x.exe :        No Dynaloader, no REXX.
  68.  
  69.             Supports fork. Running a command via open() uses fork
  70.             (slow) and correctly returns the child process id.
  71.  
  72.             Fcntl, FileHandle, POSIX and Socket modules builtin.
  73.             No other extension modules supported.
  74.  
  75.             Note that the .pm files of the builtin modules reflect
  76.             DLL use. If you need them with perl5x.exe, you have to
  77.             remove the "bootstrap" line.
  78.  
  79. -----------------------------------------------------------------------------
  80. Building:
  81. ---------
  82.  
  83. Well, the binaries in this package are not easily rebuilt. The building
  84. method I am using is largely my own, not based on the original perl
  85. methods and may need unmentioned tools.
  86.  
  87. On the other hand, the original perl 5.002 distribution is ready to be
  88. built using the standard build process, once you have all the
  89. prerequisites. This version however lacks some features, such as
  90. support for REXX variables.
  91.  
  92. The prerequisites of my build (I'm sure I forgot a few):
  93. - Perl5.002beta3.tar.gz (Perl 5.002ß3 sources).
  94. - This stuff.
  95. - EMX 0.9b01 or later (Compiler).
  96. - OS/2 Development Toolkit (or change REXX inc/lib references).
  97. - Korn shell (ksh) or some other Unix-like shell named ksh.
  98. - DMake, with group recipes configured for a Unix shell.
  99. - Larry Walls "patch" program.
  100. - Several more or less Unix-like tools, such as cp, cat, touch, find, ...
  101.  
  102. get Perl 5.002 beta3 source
  103. apply the OS/2 patches shipped with the standard perl distribution
  104. apply os2\patches       -- my own patches
  105. copy os2\config.sh .    -- my configuration stuff
  106. copy os2\makefile.mk .
  107.  
  108. If you do not have UPM (User Profile Management), remove "UPM" from
  109. makefile.mk. If you do not have DB2 2, remove "DB2CLI" from
  110. makefile.mk.
  111.  
  112. -----------------------------------------------------------------------------
  113. Not supported, bugs, "OS/2 is Not Unix":
  114. ----------------------------------------
  115.  
  116. Depending on whether you run perl5.exe or perl5x.exe, you can either
  117. use extension modules and REXX, or fork, since the EMX implementation
  118. of fork conflicts with DLL support. Remember that there is a hidden
  119. fork in open(F, "-|") and open(F, "|-").
  120.  
  121. config.sh (Config.pm) lies. It shows d_fork='undef' even though it is
  122. available in perl5x.exe. "dynamic_ext" and "extensions" are incorrect
  123. for perl5x.exe. A few others may be incorrect as well, especially
  124. those describing the development environment used when compiling Perl.
  125.  
  126. flock is available but does not yet work in EMX 0.9a.
  127.  
  128. ctermid does not work (returns NULL).
  129.  
  130. ... and of course a lot of Unix-isms like process group, user and group
  131. management, links, ...
  132.  
  133. For details, look into config.sh and the EMX library reference.
  134.  
  135. Several scripts of the test suite (see source distribution) fail due to
  136. Unix-isms like /bin/sh, `echo *`, different quoting requirements, ...
  137.  
  138. When opening a command pipe [such as open(F,"cat|")], perl5.exe
  139. returns 1 instead of the child's process id. Perl5x.exe correctly
  140. returns the process id.
  141.  
  142. OS/2 does not have a true exec API (which is used both by the exec
  143. function and when opening a command pipe with perl5x.exe). What
  144. actually happens is the call of a subprocess with the father waiting
  145. for the termination of its child. While waiting, the father still owns
  146. all its resources (it passes signals to the child however) and there
  147. may be some other side effects as well.
  148.  
  149. While localization is enabled, the EMX 0.9b1 runtime does not yet
  150. support character set locales, so the precise locale names of the form
  151. Xx_XX are not yet supported. Instead the Perl startup code defaults to
  152. the C locale without complaining. Note that locale-sensitive character
  153. set mappings may silently change when using a future version of
  154. EMXLIBC.DLL supporting localized character sets.
  155.  
  156. -----------------------------------------------------------------------------
  157. OS2::REXX Module (external library):
  158. ------------------------------------
  159.  
  160. NOTE: By default, the REXX variable pool is not available, neither to
  161. Perl, nor to external REXX functions. To enable it, you have to start
  162. Perl with the switch -R, which makes Perl call its interpreter through
  163. REXX. REXX functions which do not use variables may be usable even
  164. without -R though.
  165.  
  166. Load REXX DLL:
  167.  
  168.     $dll = load OS2::REXX NAME [, WHERE];
  169.  
  170.     NAME is DLL name, without path and extension.
  171.  
  172.     Directories are searched WHERE first (list of dirs), then
  173.     environment paths PERL5REXX, PERLREXX or, as last resort, PATH.
  174.  
  175.     The DLL is not unloaded when the variable dies.
  176.  
  177.     Returns DLL object reference, or undef on failure.
  178.  
  179. Define function prefix:
  180.  
  181.     $dll->prefix(NAME);
  182.  
  183.     Define the prefix of external functions, prepended to the
  184.     function names used within your program, when looking for
  185.     the entries in the DLL.
  186.  
  187.     Example:
  188.         $dll = load OS2::REXX "RexxBase";
  189.         $dll->prefix("RexxBase_");
  190.         $dll->Init();
  191.     is the same as
  192.         $dll = load OS2::REXX "RexxBase";
  193.         $dll->RexxBase_Init();
  194.  
  195. Define queue:
  196.  
  197.     $dll->queue(NAME);
  198.  
  199.     Define the name of the REXX queue passed to all external
  200.     functions of this module. Defaults to "SESSION".
  201.  
  202. Check for functions (optional):
  203.  
  204.     BOOL = $dll->find(NAME [, NAME [, ...]]);
  205.  
  206.     Returns true if all functions are available.
  207.  
  208. Call external REXX function:
  209.  
  210.     $dll->function(arguments);
  211.  
  212.     Returns the return string if the return code is 0, else undef.
  213.     Dies with error message if the function is not available.
  214.  
  215. Bind scalar variable to REXX variable:
  216.  
  217.     tie $var, OS2::REXX, "NAME";
  218.  
  219. Bind array variable to REXX stem variable:
  220.  
  221.     tie @var, OS2::REXX, "NAME.";
  222.  
  223.     Only scalar operations work so far. No array assignments,
  224.     no array operations, ... FORGET IT.
  225.  
  226. Bind hash array variable to REXX stem variable:
  227.  
  228.     tie %var, OS2::REXX, "NAME.";
  229.  
  230.     To access all visible REXX variables via hash array, bind to "";
  231.  
  232.     No array assignments. No array operations, other than hash array
  233.     operations. Just like the *dbm based implementations.
  234.  
  235.     For the usual REXX stem variables, append a "." to the name,
  236.     as shown above. If the hash key is part of the stem name, for
  237.     example if you bind to "", you cannot use lower case in the stem
  238.     part of the key and it is subject to character set restrictions.
  239.  
  240. Erase individual REXX variables (bound or not):
  241.  
  242.     OS2::REXX::drop("NAME" [, "NAME" [, ...]]);
  243.  
  244. Note that while function and variable names are case insensitive in the
  245. REXX language, function names exported by a DLL and the REXX variables
  246. (as seen by Perl through the chosen API) are all case sensitive!
  247.  
  248. Most REXX DLLs export function names all upper case, but there are a
  249. few which export mixed case names (such as RxExtras). When trying to
  250. find the entry point, both exact case and all upper case are searched.
  251. If the DLL exports "RxNap", you have to specify the exact case, if it
  252. exports "RXOPEN", you can use any case.
  253.  
  254. To avoid interfering with subroutine names defined by Perl (DESTROY)
  255. or used within the REXX module (prefix, find), it is best to use mixed
  256. case and to avoid lowercase only or uppercase only names when calling
  257. REXX functions. Be consistent. The same function written in different
  258. ways results in different Perl stubs.
  259.  
  260. There is no REXX interpolation on variable names, so the REXX variable
  261. name TEST.ONE is not affected by some other REXX variable ONE. And it
  262. is not the same variable as TEST.one!
  263.  
  264. You cannot call REXX functions which are not exported by the DLL.
  265. While most DLLs export all their functions, some, like RxFTP, export
  266. only "...LoadFuncs", which registers the functions within REXX only.
  267.  
  268. You cannot call 16-bit DLLs. The few interesting ones I found
  269. (FTP,NETB,APPC) do not export their functions.
  270.  
  271. I do not know whether the REXX API is reentrant with respect to
  272. exceptions (signals) when the REXX top-level exception handler is
  273. overridden. So unless you know better than I do, do not access REXX
  274. variables (probably tied to Perl variables) or call REXX functions
  275. which access REXX queues or REXX variables in signal handlers.
  276.  
  277. See ext/OS2/REXX/rx*.pl for examples.
  278.  
  279. -----------------------------------------------------------------------------
  280. OS2::UPM (external library):
  281. ----------------------------
  282.  
  283. UPM constants (see <upm.h>) are exported automatically, functions only
  284. on request.
  285.  
  286. (USERID, TYPE) = local_user ()
  287.  
  288.     return local user
  289.  
  290. LIST = user_list (REMOTENODE="", REMOTETYPE_UPM_LOCAL)
  291.     LIST = 4 items per logged on user
  292.         [0] = user id
  293.         [1] = remote node name
  294.         [2] = remote node type (INT)
  295.         [3] = session id (INT)
  296.  
  297. (USERID, TYPE) = local_logon ()
  298.  
  299.     do a local logon, PM window, if not already logged on
  300.  
  301. BOOL = logon (USERID, PASSWORD, AUTHCHECK=UPM_USER, REMOTENODE="", REMOTETYPE=UPM_LOCAL)
  302. BOOL = logoff (USERID, REMOTENODE="", REMOTETYPE=UPM_LOCAL)
  303.  
  304.     logon/logoff process (DB2/2)
  305.  
  306. BOOL = logon_user (USERID, PASSWORD, REMOTENODE="", REMOTETYPE=UPM_LOCAL)
  307. BOOL = logoff_user (USERID, REMOTENODE="", REMOTETYPE=UPM_LOCAL)
  308.  
  309.     logon/logoff user
  310.  
  311. ERRCODE = error ()
  312.  
  313.     return UPM error code of last failure
  314.  
  315. STRING = message (ERRCODE)
  316.  
  317.     return message text for supplied UPM error code
  318.  
  319. Defaults:
  320.     REMOTETYPE = UPM_LOCAL
  321.     REMOTENODE = ""
  322.     AUTHCHECK  = UPM_USER
  323.  
  324. -----------------------------------------------------------------------------
  325. OS2::FTP (external library):
  326. ----------------------------
  327.  
  328. $acct = new FTP "host", "userid", "passwd" [, "acct"]
  329.  
  330.     Create virtual FTP session - no login.
  331.  
  332. FTP::logoff()
  333.  
  334.     Logoff all sessions.
  335.  
  336. ($msec, $address) = FTP::ping("host", pktlen);
  337. $msec = FTP::ping($address, pktlen);
  338.  
  339.     Ping host. Returns milliseconds or negative error code.
  340.     $address is 32-bit number.
  341.  
  342. $errno = $acct->errno();
  343.  
  344.     Return last error code (FTP*).
  345.  
  346. $text = FTP::message($errno);
  347.  
  348.     Return message text of last error.
  349.  
  350. $status:  <0 on error, >=0 on success.
  351. $tfrtype: T_BINARY, T_ASCII, T_EBCDIC
  352. "mode":   "w" for overwrite, "a" for append
  353.  
  354. $status = $acct->dir("local", "pattern"="*");
  355. $status = $acct->ls("local", "pattern"="*");
  356.  
  357. $status = $acct->chdir("dir");
  358. $status = $acct->mkdir("dir");
  359. $status = $acct->rmdir("dir");
  360. ($status, $cwd) = $acct->getcwd();
  361.  
  362. $status = $acct->get("local", "remote"=local, "mode"="w", $tfrtype=T_BINARY);
  363.  
  364. $status = $acct->put("local", "remote"=local, $tfrtype=T_BINARY);
  365. $status = $acct->putunique("local", "remote"=local, $tfrtype=T_BINARY);
  366. $status = $acct->append("local", "remote"=local, $tfrtype=T_BINARY);
  367.  
  368. $status = $acct->rename("from", "to");
  369. $status = $acct->delete("name");
  370.  
  371. $status = $acct->proxy($source_acct, "dst_file", "src_file", $tfrtype=T_BINARY);
  372.  
  373. $status = $acct->quote("string");
  374. $status = $acct->site("string");
  375. ($status, $infostring) = $acct->sys();
  376.  
  377. -----------------------------------------------------------------------------
  378. DB2CLI (external library):
  379. --------------------------
  380.  
  381. See lib/DB2CLI.pm.
  382.  
  383. I did not check the output of a pod2somewhat converter because the
  384. perl5 package (at least the one here) does not seem to have a
  385. converter which accepts some .pm file (or I don't grok the way it
  386. should be used).
  387.  
  388. -----------------------------------------------------------------------------
  389. SNMP Distributed Programming Interface (DPI):
  390. ---------------------------------------------
  391.  
  392. Not much docs yet, sorry.
  393.  
  394. For the copyright of IBM's DPI library code, see ext/DPI/DOC/README.
  395.  
  396. The module interface mimics DPI 2.0. The implementation may use the
  397. DPI 1.1 or the DPI 2.0 protocol, depending on how the DPI library is
  398. built. The shipped binary use the DPI 1.1 protocol, which is supported
  399. at least by the OS/2 and AIX agents.
  400.  
  401. -----------------------------------------------------------------------------
  402. Other:
  403. ------
  404.  
  405.   setpriority WHICH,PID,PRIO
  406.  
  407.     Set priority of process or process tree.
  408.  
  409.     WHICH:    ignored (what's it good for?)
  410.  
  411.     PID:    >= 0:    process only
  412.         <  0:    process tree
  413.  
  414.     PRIO:    class << 8 | delta
  415.  
  416.         class:    0    no change
  417.              1    idle-time    (lowest)
  418.               2    regular
  419.               3    time-critical    (highest)
  420.               4    fixed-high    (between 2 and 3)
  421.  
  422.         delta:    -31..+31
  423.  
  424.   getpriority IGNORED,PID
  425.  
  426.       Return priority of process.
  427.  
  428.         Bits 8..15    priority class (1..4)
  429.         Bits 0..7    priority within class (0..31)
  430.  
  431.   system LIST
  432.  
  433.     If the first element of LIST is an integer, it controls the
  434.     mode of the started process and the relationship between the
  435.     starting (father) and the started (child) process.
  436.  
  437.     You can use either one of the process modes:
  438.  
  439.         P_WAIT (0)    = wait until child terminates (default)
  440.         P_NOWAIT    = do not wait until child terminates
  441.         P_SESSION    = new session
  442.         P_DETACH    = detached
  443.         P_PM        = PM program
  444.  
  445.     and optionally add PM and session option bits:
  446.  
  447.         P_DEFAULT (0)    = default
  448.         P_MINIMIZE    = minimized
  449.         P_MAXIMIZE    = maximized
  450.         P_FULLSCREEN    = fullscreen (session only)
  451.         P_WINDOWED    = windowed (session only)
  452.  
  453.         P_FOREGROUND    = foreground (if running in foreground)
  454.         P_BACKGROUND    = background
  455.  
  456.         P_NOCLOSE    = don't close window on exit (session only)
  457.  
  458.         P_QUOTE        = quote all arguments
  459.         P_TILDE        = MKS argument passing convention
  460.         P_UNRELATED    = do not kill child when father terminates
  461.  
  462.     The constants shown above are defined by OS2::Process.
  463.  
  464.     If P_UNRELATED is set, there is no father/child relationship.
  465.     The starting process does not wait for termination of the new
  466.     process, no matter what process mode is given, and system()
  467.     does not return the process id (a "feature" of OS/2).
  468.  
  469.     If the process is started in P_WAIT mode, system() waits for
  470.     completion of the child process and returns its termination
  471.     status.
  472.  
  473.     Otherwise system() does not wait for termination of the child
  474.     process and returns the process id of the child process. When
  475.     the father process terminates, the child process is killed!
  476.  
  477.     Example:
  478.         use OS2::Process;
  479.         $pid = system(P_PM+P_BACKGROUND, "epm.exe");
  480.  
  481.     NOTE: Whether the first argument is a process control or not is
  482.     guessed by looking at the data type. However Perl's dynamic
  483.     typing system may yield unexpected results.
  484.  
  485.   system STRING
  486.   exec STRING
  487.  
  488.     If the string starts with "@" or contains any of "%&|<>",
  489.     it is called as a shell command. Else the program is called
  490.     directly.
  491.  
  492.     If the environment variable SHELL is defined, it is used
  493.     instead of COMSPEC when running shell commands. It should
  494.     be a Unix-style shell.
  495.  
  496.   file checks (-X), stat(), ...
  497.  
  498.       When testing filenames, not handles, char-devices are detected
  499.       only when prefixed by "/dev/", so "/dev/con" is valid, "con" is
  500.       not.
  501.  
  502.     Currently, only /dev/con and /dev/tty are recognized.
  503.  
  504. -----------------------------------------------------------------------------
  505. History:
  506.  
  507. 15.12.94     Initial release (perl5000.zip).
  508.  
  509. 17.12.94    Moved REXX sub defn to find(). Hash array for functions no
  510.         longer required, allows overriding subs like "find".
  511.  
  512.         DLL entries are case sensitive, try both upper case and
  513.         exact case.
  514.  
  515. 18.12.94    Detect char- and block-devices (stat() hack). Some future
  516.         release may probably remove block device support, once
  517.         char-device support is built into EMX.
  518.  
  519.         Fixed perl5db tty check.
  520.  
  521. 22.12.94    EMX fixlevel 2 exports its exception handler, so now
  522.         signals work even when the REXX variable pool is enabled.
  523.  
  524.         Disabled error and exception popups.
  525.  
  526. 27.12.94    Case conversions of tied variables cleaned up.
  527.  
  528.         REXX (REXX.DLL, REXXAPI.DLL) now loaded on demand.
  529.  
  530. 7.1.95        Fixed Shell module (did not allow more than one argument).
  531.  
  532. 11.1.95        Accept drive letter as absolute path in do/require/use.
  533.  
  534. 13.1.95        Larrys memory-leak patches (#1, dated Friday 13).
  535.  
  536. 26.1.95        fcntl and ioctl were missing. fcntl was explicitly disabled
  537.         in its source code (ifndef DOSISH) and the ioctl enabler is
  538.         in the wrong place (unixish.h instead of config.sh).
  539.  
  540. 16.3.95     DosQueryFSAttach (stat hack) may crash the system. Now just
  541.         look for /dev/con and /dev/tty.
  542.  
  543.         Applied "pad_findlex" patch (patches/1).
  544.  
  545. 23.3.95        Support fork. Two executables, one for DLLs and one for fork.
  546.  
  547. 24.3.95    5.001
  548.  
  549. 13.4.95        Patchlevel "c".
  550.  
  551. 21.4.95        Truncate names of extension DLLs to 8 chars - Warp no longer
  552.         accepts them (2.x did).
  553.  
  554. 22.4.95        Replaced EMX dirent by my own to get all directory entries
  555.         even when HPFS386 is used. Additionally, my implementation
  556.         is not restricted in the total size of the directory (a
  557.         conflict between Perl's memory allocator and the one of the
  558.         EMX library DLL).
  559.  
  560. 27.4.95        Support for fork() disabled system() in DLL version.
  561.  
  562. 7.5.95        Added Tye McQueen's FileGlob. See File::KGlob*.
  563.  
  564. 12.5.95        Fixed Cwd. Fixed OS/2 dependencies in MakeMaker, with
  565.         a few Config.sh items added (separators, exe-extension).
  566.  
  567.         Moved UPM and REXX to OS2::. Combined REXXCALL and REXX.
  568.         Plain old REXX module is still available as passthru though.
  569.  
  570.         Perl DLLs now have an underscore appended to avoid name
  571.         conflicts with standard OS/2 DLLs (see DynaLoader.pm).
  572.  
  573. 13.5.95        Added FTP API support (OS2::FTP).
  574.         
  575. 2.7.95        Applied "official unofficial" patches up to level "m".
  576.         The modpods documentation now is in the modules themselves.
  577.  
  578. 4.7.95        Implement command pipes (my_popen) using fork instead of
  579.         standard popen in the fork version (perl5x.exe). While this
  580.         is a lot slower, it correctly returns the process id and
  581.         supports open(F,"-|") and open(F,"|-").
  582.  
  583.         Use the same code for exec(CMD) as for system(CMD).
  584.  
  585.         Support socket functions (set|get|end)(host|net|proto|serv)ent.
  586.  
  587. 15.7.95    5.001m
  588.  
  589. 3.8.95        DB2 CLI module.
  590.  
  591. 12.8.95        A debug printf was left over in perl5x.exe. And the shipped
  592.         OS/2 patches were not up to date with the executables.
  593.  
  594. 25.8.95        Due to inconsistent naming of DLLs of modules with more than
  595.         8 chars, such DLLs were not loadable. The underscore is first
  596.         appended to the full name, then it is truncated to 8 chars.
  597.  
  598. 9.1.96        EMX 0.9b
  599.  
  600.         Added DB_File (since supported by EMX).
  601.  
  602.         POSIX::ttyname is now available.
  603.  
  604. 20.2.96    5.002ß3
  605.  
  606.         Still based on my own makefiles and hand-made config files
  607.         (sorry Ilya). I have neither interest nor time to convert
  608.         my system into a unix fake, make shell profiles, correct
  609.         paths and environment variables in such a way that they
  610.         work with unix shells, hack conflicting utilities (I'm
  611.         using my own "cp","rm",...) and so on.
  612.  
  613.         Changed DLL naming convention to get compatible with
  614.         Ilya's implementation: at most 7 chars plus underscore
  615.         (well, it's more reasonable anyway)
  616.  
  617.         Localization is enabled. Please read the note above.
  618.  
  619. 22.2.96        SNMP-DPI module.
  620.  
  621. 26.2.96        Removed SDBM from distribution. DB should do.
  622.  
  623.         Added more extension modules as builtins into perl5x.
  624.  
  625.         Added OS2::Process module for verbose names for the child
  626.         process control flags of system(). Fixed the type check of
  627.         the process control argument.
  628.