[comp.archives] [comp.sources.bugs...] perl 3.0 patch #42

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]