[comp.sources.bugs] Perl V3 bug: repeated tests

dennis@ (Dennis Cottel) (10/26/89)

There's a bug in Perl3.0, related, I think, to the new optimization
for repeated tests on the same variable.  Things quit working in
mysterious ways if you have a construction like:

	if ( $i = 1 ) {...}
	if ( $i = 2 ) {...}
	if ( $i = 3 ) {...}
	if ( $i = 4 ) {...}
	...

This breaks if you have 3 or more tests.  You can get around the
problem by doing something like:

	if ( $i = 1 ) {...}
	if ( $i = 2 ) {...}
$kludge++;
	if ( $i = 3 ) {...}
	if ( $i = 4 ) {...}
	...

to avoid having more than 2 tests in a row.

I have reported this to Larry Wall.

	Dennis Cottel  Naval Ocean Systems Center, San Diego, CA  92152
	(619) 553-1645      dennis@nosc.MIL      sdcsvax!noscvax!dennis

dennis@nosc.mil (Dennis Cottel) (10/26/89)

There's a bug in Perl3.0, related, I think, to the new optimization
for repeated tests on the same variable.  Things quit working in
mysterious ways if you have a construction like:

	if ( $i = 1 ) {...}
	if ( $i = 2 ) {...}
	if ( $i = 3 ) {...}
	if ( $i = 4 ) {...}
	...

This breaks if you have 3 or more tests.  You can get around the
problem by doing something like:

	if ( $i = 1 ) {...}
	if ( $i = 2 ) {...}
$kludge++;
	if ( $i = 3 ) {...}
	if ( $i = 4 ) {...}
	...

to avoid having more than 2 tests in a row.

I have reported this to Larry Wall (actually to Larry's mail handling
program ;-).

	Dennis Cottel  Naval Ocean Systems Center, San Diego, CA  92152
	(619) 553-1645      dennis@nosc.MIL      sdcsvax!noscvax!dennis

lwall@jpl-devvax.JPL.NASA.GOV (Larry Wall) (10/27/89)

In article <1452@nosc.NOSC.MIL> dennis@nosc.mil (Dennis Cottel) writes:
: There's a bug in Perl3.0, related, I think, to the new optimization
: for repeated tests on the same variable.  Things quit working in
: mysterious ways if you have a construction like:
: 
: 	if ( $i = 1 ) {...}
: 	if ( $i = 2 ) {...}
: 	if ( $i = 3 ) {...}
: 	if ( $i = 4 ) {...}
: 	...
: 
: This breaks if you have 3 or more tests.  You can get around the
: problem by doing something like:
: 
: 	if ( $i = 1 ) {...}
: 	if ( $i = 2 ) {...}
: $kludge++;
: 	if ( $i = 3 ) {...}
: 	if ( $i = 4 ) {...}
: 	...
: 
: to avoid having more than 2 tests in a row.
: 
: I have reported this to Larry Wall (actually to Larry's mail handling
: program ;-).

This is fixed in my version.  Patch #1, coming out later tonight, will
correct this problem, among others.

How come this didn't show up in alpha, beta or gamma testing?  Life is
disgusting.  ('Course, so is the alternative.)

Larry Wall
lwall@jpl-devvax.jpl.nasa.gov