lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) (01/14/91)
Archive-name: languages/perl/perl-patches/1991-01-12 Archive-directory: jpl-devvax.jpl.nasa.gov:/pub/perl.3.0/patches/ [128.149.1.143] Original-posting-by: lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) Original-subject: perl 3.0 patch #42 Reposted-by: emv@ox.com (Edward Vielmetti) System: perl version 3.0 Patch #: 42 Subject: Configure now checks alignment requirements Subject: Configure checks typecasting behavior better Subject: Configure now checks for flexfilenames Subject: executables for multiple versions may now coexist Subject: added -0 option Subject: added installperl script Subject: added some Ultrix, A/UX and IRIX advice to README Subject: the perl debugger was dumping core frequently Subject: the postincrement to preincrement optimizer was overzealous Subject: foreach didn't localize its temp array properly Subject: assignment to a slice didn't supply an array context to RHS Subject: variable suicide on local($a,$b) = @_ is now suppressed Subject: added binary and hex pack/unpack options Subject: fixed casting problem with n and N pack options Subject: fixed printf("%c", 0) Subject: ANSIfied the stat mode checking Subject: the -i switch is now much more robust and informative Subject: close on a pipe didn't return failure correctly Subject: stat on temp values could wipe them out prematurely, i.e. grep(-d,<*>) Subject: -l didn't work right with _ Subject: sort subroutines didn't allow copying $a or $b to other variables. Subject: caller() coredumped when called outside the debugger. Subject: perl -D14 crashed on .. Subject: waitpid() emulation was useless because of #ifdef WAITPID Subject: <> input to individual array elements was suboptimal Subject: the @* format counted lines wrong Subject: the @* format didn't handle lines with nulls or without newline Subject: lib/complete.pl is now customizable Subject: lib/ctime.pl is now packaged better Subject: some .pl files were missing their trailing 1; Subject: @_ couldn't be accessed from debugger Subject: package didn't create symbol tables that could be reset Subject: split with no arguments could wipe out next operator Subject: fixed some man page entries Subject: started an addendum and errata section in the man page Subject: s/^foo/bar/ occasionally brought on core dumps Subject: undid unwarranted assumptions about memcmp() return value Subject: ('a' .. 'z') could lose its value in a loop Subject: TEST now reports errors more accurately Subject: t/op.dbm makes fewer assumptions about dbm file extensions Subject: t/op.mkdir a little wiser about error messages Subject: eval'ed formats without proper termination blew up Subject: whitespace now allowed after terminating . of format Subject: die could exit with 0 value on some machines Subject: x2p/Makefile.SH blew up on /afs misfeature Subject: a2p didn't recognize split with regular expression Subject: a2p didn't handle > redirection right Subject: x2p/s2p.SH blew up on /afs misfeature Description: Most of these patches are pretty self-explanatory. Much of this is random cleanup in preparation for version 4.0, so I won't talk about it here. A couple of things should be noted, however. First, there's a new -0 option that allows you to specify (in octal) the initial value of $/, the record separator. It's primarily intended for use with versions of find that support -print0 to delimit filenames with nulls, but it's more general than that: -0 null -01 ^A -012 default -015 CR -00 paragraph mode -0777 file slurp mode This feature is so new that it didn't even make it into the book. The other major item is that different patchlevels of perl can now coexist in your bin directory. The names "perl" and "taintperl" are just links to "perl3.044" and "tperl3.044". This has several benefits. The perl3.044 invokes the corresponding tperl3.044 rather than taintperl, so it always runs the correct version. Second, you can "freeze" a script by putting a #! line referring to a version that it is known to work with. Third, you can put a new version out there to try out before making it the default perl. Lastly, it sells more disk drives. :-) Barring catastrophe, this will likely be the last patch before version 4.0 comes out. Fix: From rn, say "| patch -p -N -d DIR", where DIR is your perl source directory. Outside of rn, say "cd DIR; patch -p -N <thisarticle". If you don't have the patch program, apply the following by hand, or get patch (version 2.0, latest patchlevel). After patching: *** DO NOTHING--INSTALL ALL PATCHES UP THROUGH #44 FIRST *** If patch indicates that patchlevel is the wrong version, you may need to apply one or more previous patches, or the patch may already have been applied. See the patchlevel.h file to find out what has or has not been applied. In any event, don't continue with the patch. If you are missing previous patches they can be obtained from me: Larry Wall lwall@jpl-devvax.jpl.nasa.gov If you send a mail message of the following form it will greatly speed processing: Subject: Command @SH mailpatch PATH perl 3.0 LIST ^ note the c where PATH is a return path FROM ME TO YOU either in Internet notation, or in bang notation from some well-known host, and LIST is the number of one or more patches you need, separated by spaces, commas, and/or hyphens. Saying 35- says everything from 35 to the end. You can also get the patches via anonymous FTP from jpl-devvax.jpl.nasa.gov (128.149.1.143). [Text of actual patch (1200 lines) deleted. --Ed]