-of EBCDIC versions of parser files such as perly.c. This has to be done
-before running Configure the first time. If you failed to do so then the
-easiest way to re-Configure Perl is to delete your misconfigured build root
-and re extract the source from the tar ball. If for some reason you do not
-want to do that then, after ensuring that /etc/yyparse.c is properly in place
-run the following commands from within the Perl build directory:
-
- rm -f y.tab.c y.tab.h
- yacc -d perly.y
- mv -f y.tab.c perly.c
- chmod u+w perly.c
- sed -e '/^#include "perl\.h"/a\
- \
- #define yydebug PL_yydebug\
- #define yynerrs PL_yynerrs\
- #define yyerrflag PL_yyerrflag\
- #define yychar PL_yychar\
- #define yyval PL_yyval\
- #define yylval PL_yylval' \
- -e '/YYSTYPE *yyval;/D' \
- -e '/YYSTYPE *yylval;/D' \
- -e '/int yychar,/,/yynerrs;/D' \
- -e 's/int yydebug = 0;/yydebug = 0;/' \
- -e 's/[^_]realloc(/PerlMem_realloc(/g' \
- -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
- -e 's/y\.tab/perly/g' perly.c >perly.tmp
- mv -f perly.tmp perly.c
- mv -f y.tab.h perly.h
- cd x2p
- rm -f y.tab.c y.tab.h
- yacc a2p.y
- mv -f y.tab.c a2p.c
- chmod u+w a2p.c
- sed -e 's/fprintf *( *stderr *,/PerlIO_printf(Perl_debug_log,/g' \
- -e 's/y\.tab/a2p/g' a2p.c >a2p.tmp
- mv -f a2p.tmp a2p.c
- mv -f y.tab.h a2p.h
- cd ..
-
-There, easy huh? If you find typing all that in difficult then perhaps
-you should reconsider the rm -rf of the perl build directory and
-re extraction of the source tar ball.
-
-=item *
-
-This port doesn't support dynamic loading. Although OS/390 has support
-for DLLs via dllload(), there are some differences that cause problems
-for Perl. (We need a volunteer to write a ext/DynaLoader/dl_dllload.xs
-file).
-
-=item *
-
-A message of the form:
-
- shmat() found.
- and it returns (void *).
- *** WHOA THERE!!! ***
- The recommended value for $d_shmatprototype on this machine was "define"!
- Keep the recommended value? [y]
-
-is nothing to worry about at all.
-
-=item *
+of EBCDIC versions of parser files such as perly.c and perly.h.
+This has to be done before running Configure the first time. If you failed
+to do so then the easiest way to re-Configure Perl is to delete your
+misconfigured build root and re-extract the source from the tar ball.
+Then you must ensure that /etc/yyparse.c is properly in place before
+attempting to re-run Configure.
+
+=head3 Dynamic loading
+
+Dynamic loading is required if you want to use XS modules from CPAN (like
+DBI (and DBD's), JSON::XS, and Text::CSV_XS) or update CORE modules from
+CPAN with newer versions (like Encode) without rebuilding all of the perl
+binary.
+
+This port will support dynamic loading, but it is not selected by
+default. If you would like to experiment with dynamic loading then
+be sure to specify -Dusedl in the arguments to the Configure script.
+See the comments in hints/os390.sh for more information on dynamic loading.
+If you build with dynamic loading then you will need to add the
+$archlibexp/CORE directory to your LIBPATH environment variable in order
+for perl to work. See the config.sh file for the value of $archlibexp.
+If in trying to use Perl you see an error message similar to:
+
+ CEE3501S The module libperl.dll was not found.
+ From entry point __dllstaticinit at compile unit offset +00000194
+ at
+
+then your LIBPATH does not have the location of libperl.x and either
+libperl.dll or libperl.so in it. Add that directory to your LIBPATH and
+proceed.
+
+In hints/os390.sh, selecting -Dusedl will default to *also* select
+-Duseshrplib. Having a shared plib not only requires LIBPATH to be set to
+the correct location of libperl.so but also makes it close to impossible
+to run more than one different perl that was built this way at the same
+time.
+
+All objects that are involved in -Dusedl builds should be compiled for
+this, probably by adding to all ccflags
+
+ -qexportall -qxplink -qdll -Wc,XPLINK,dll,EXPORTALL -Wl,XPLINK,dll
+
+=head3 Optimizing