=item *
-You need a separate perl executable F<perl__.exe> (see L<perl__.exe>)
+You need a separate perl executable F<perl__.exe> (see L</perl__.exe>)
if you want to use PM code in your application (as Perl/Tk or OpenGL
Perl modules do) without having a text-mode window present.
=item *
There is no simple way to access WPS objects. The only way I know
-is via C<OS2::REXX> and C<SOM> extensions (see L<OS2::REXX>, L<Som>).
+is via C<OS2::REXX> and C<SOM> extensions (see L<OS2::REXX>, L<SOM>).
However, we do not have access to
convenience methods of Object-REXX. (Is it possible at all? I know
of no Object-REXX API.) The C<SOM> extension (currently in alpha-text)
environments. This depends on the features the I<extender> - most
probably RSX - decided to implement.
-Cf. L<Prerequisites>.
+Cf. L</Prerequisites>.
=head2 Prerequisites
EMX runtime is required (may be substituted by RSX). Note that
it is possible to make F<perl_.exe> to run under DOS without any
-external support by binding F<emx.exe>/F<rsx.exe> to it, see L<emxbind>. Note
+external support by binding F<emx.exe>/F<rsx.exe> to it, see C<emxbind>. Note
that under DOS for best results one should use RSX runtime, which
has much more functions working (like C<fork>, C<popen> and so on). In
fact RSX is required if there is no VCPI present. Note the
or in configurable location (see L<"PERL_SH_DIR">).
For best results use EMX pdksh. The standard binary (5.2.14 or later) runs
-under DOS (with L<RSX>) as well, see
+under DOS (with L</RSX>) as well, see
http://www.ilyaz.org/software/os2/
There are also endless possibilities to use I<executable extensions> of
4os2, I<associations> of WPS and so on... However, if you use
*nixish shell (like F<sh.exe> supplied in the binary distribution),
-you need to follow the syntax specified in L<perlrun/"Switches">.
+you need to follow the syntax specified in L<perlrun/"Command Switches">.
Note that B<-S> switch supports scripts with additional extensions
F<.cmd>, F<.btm>, F<.bat>, F<.pl> as well.
other words, C<PATH> is essentially searched twice: once by the OS for
an executable, then by Perl for scripts.
-Note also that executable files on OS/2 can have an arbitrary extension,
-but F<.exe> will be automatically appended if no dot is present in the name.
-The workaround is as simple as that: since F<blah.> and F<blah> denote the
-same file (at list on FAT and HPFS file systems), to start an executable residing in file F<n:/bin/blah> (no
-extension) give an argument C<n:/bin/blah.> (dot appended) to system().
+Note also that executable files on OS/2 can have an arbitrary extension, but
+F<.exe> will be automatically appended if no dot is present in the name. The
+workaround is as simple as that: since F<blah.> and F<blah> denote the same
+file (at list on FAT and HPFS file systems), to start an executable residing in
+file F<n:/bin/blah> (no extension) give an argument C<n:/bin/blah.> (dot
+appended) to system().
Perl will start PM programs from VIO (=text-mode) Perl process in a
separate PM session;
=item *
Did you run your programs with C<-w> switch? See
-L<Starting OS/2 (and DOS) programs under Perl>.
+L<Starting OSE<sol>2 (and DOS) programs under Perl>.
=item *
=head2 C<``> and pipe-C<open> do not work under DOS.
This may a variant of just L<"I cannot run external programs">, or a
-deeper problem. Basically: you I<need> RSX (see L<"Prerequisites">)
+deeper problem. Basically: you I<need> RSX (see L</Prerequisites>)
for these commands to work, and you may need a port of F<sh.exe> which
understands command arguments. One of such ports is listed in
-L<"Prerequisites"> under RSX. Do not forget to set variable
+L</Prerequisites> under RSX. Do not forget to set variable
C<L<"PERL_SH_DIR">> as well.
DPMI is required for RSX.
B<NOTE>. Because of a typo the binary installer of 5.00305
would install a variable C<PERL_SHPATH> into F<Config.sys>. Please
-remove this variable and put C<L<PERL_SH_DIR>> instead.
+remove this variable and put C<L</PERL_SH_DIR>> instead.
=head2 Manual binary installation
=item Additional Perl modules
- unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.13.8/
+ unzip perl_ste.zip -d f:/perllib/lib/site_perl/5.21.11/
Same remark as above applies. Additionally, if this directory is not
one of directories on @INC (and @INC is influenced by C<PERLLIB_PREFIX>), you
=over 4
-=item 18
+=item Z<>18
Checks C<atime> and C<mtime> of C<stat()> - unfortunately, HPFS
provides only 2sec time granularity (for compatibility with FAT?).
-=item 25
+=item Z<>25
Checks C<truncate()> on a filehandle just opened for write - I do not
know why this should or should not work.
to convert perl utilities to F<.cmd> files and put them on
PATH. You need to put F<.EXE>-utilities on path manually. They are
installed in C<$prefix/bin>, here C<$prefix> is what you gave to
-F<Configure>, see L<Making>.
+F<Configure>, see L</Making>.
If you use C<man>, either move the installed F<*/man/> directories to
your C<MANPATH>, or modify C<MANPATH> to match the location. (One
Fully build and test the Perl distribution. Make sure that no tests are
failing with C<test> and C<aout_test> targets; fix the bugs in Perl and
the Perl test suite detected by these tests. Make sure that C<all_test>
-make target runs as clean as possible. Check that C<os2/perlrexx.cmd>
+make target runs as clean as possible. Check that F<os2/perlrexx.cmd>
runs fine.
=item 2.
files to this new location. Redo the tests to make sure that the versions of
modules inherited from older versions of Perl are not needed.
-Actually, the log output of L<pod2ipf> during the step 6 gives a very detailed
+Actually, the log output of L<pod2ipf(1)> during the step 6 gives a very detailed
info about which modules are loaded from which place; so you may use it as
an additional verification tool.
DLL. However, a lot of functionality will work even if the executable is not
an EMX applications, e.g., if compiled with
- gcc -Wall -DDOSISH -DOS2=1 -O2 -s -Zomf -Zsys perl-starter.c -DPERL_DLL_BASENAME=\"perl312F\" -Zstack 8192 -Zlinker /PM:VIO
+ gcc -Wall -DDOSISH -DOS2=1 -O2 -s -Zomf -Zsys perl-starter.c \
+ -DPERL_DLL_BASENAME=\"perl312F\" -Zstack 8192 -Zlinker /PM:VIO
Here is the sample C file:
if (_execname(buf, sizeof(buf) - 13) != 0)
die_with("Can't find full path: ", strerror(errno), "", "");
- /* XXXX Fill `me' with new value */
+ /* XXXX Fill 'me' with new value */
l = strlen(buf);
while (l && buf[l-1] != '/' && buf[l-1] != '\\')
l--;
{
main_t f;
handler_t h;
-
+
me = argv[0];
/**/
handle = load_perl_dll(PERL_DLL_BASENAME);
=head2 Some C</> became C<\> in pdksh.
-You have a very old pdksh. See L<Prerequisites>.
+You have a very old pdksh. See L</Prerequisites>.
=head2 C<'errno'> - unresolved external
-You do not have MT-safe F<db.lib>. See L<Prerequisites>.
+You do not have MT-safe F<db.lib>. See L</Prerequisites>.
=head2 Problems with tr or sed
=head2 Library ... not found
-You did not run C<omflibs>. See L<Prerequisites>.
+You did not run C<omflibs>. See L</Prerequisites>.
=head2 Segfault in make
-You use an old version of GNU make. See L<Prerequisites>.
+You use an old version of GNU make. See L</Prerequisites>.
=head2 op/sprintf test failure
shutdown will be automatically cancelled. Do not call C<perl_hmq_GET(1)>
unless you are going to process messages on an orderly basis.
-=item * Treating errors reported by OS/2 API
+=item Treating errors reported by OS/2 API
There are two principal conventions (it is useful to call them C<Dos*>
and C<Win*> - though this part of the function signature is not always
=back
-=item * Loading DLLs and ordinals in DLLs
+=item Loading DLLs and ordinals in DLLs
Some DLLs are only present in some versions of OS/2, or in some
configurations of OS/2. Some exported entry points are present only
=head2 Why strange names?
Since Perl processes the C<#!>-line (cf.
-L<perlrun/DESCRIPTION>, L<perlrun/Switches>,
-L<perldiag/"Not a perl script">,
+L<perlrun/DESCRIPTION>, L<perlrun/Command Switches>,
L<perldiag/"No Perl script found in input">), it should know when a
program I<is a Perl>. There is some naming convention which allows
Perl to distinguish correct lines from wrong ones. The above names are
B<REMARK>. C<LIBPATHSTRICT>, C<BEGINLIBPATH> and C<ENDLIBPATH> are
not environment variables, although F<cmd.exe> emulates them on C<SET
-...> lines. From Perl they may be accessed by L<Cwd::extLibpath> and
-L<Cwd::extLibpath_set>.
+...> lines. From Perl they may be accessed by
+L<Cwd::extLibpath|/Cwd::extLibpath([type])> and
+L<Cwd::extLibpath_set|/Cwd::extLibpath_set( path [, type ] )>.
=head2 DLL forwarder generation
with F<cmd.exe> as a shell, thus I picked up C<sh.exe>. This assures almost
100% compatibility with the scripts coming from *nix. As an added benefit
this works as well under DOS if you use DOS-enabled port of pdksh
-(see L<"Prerequisites">).
+(see L</Prerequisites>).
B<Disadvantages:> currently F<sh.exe> of pdksh calls external programs
via fork()/exec(), and there is I<no> functioning exec() on
cannot test it.
For the details of the current situation with calling external programs,
-see L<Starting OS/2 (and DOS) programs under Perl>. Set us mention a couple
+see L<Starting OSE<sol>2 (and DOS) programs under Perl>. Set us mention a couple
of features:
=over 4
=head1 BUGS
This description is not updated often (since 5.6.1?), see F<./os2/Changes>
-(L<perlos2delta>) for more info.
+for more info.
=cut