[comp.sources.d] patch for cut.pl

bob@dhw68k.cts.com (Bob Best) (07/28/88)

Although, by a fluke, the cut.pl posting runs without error, there is
a bug of mine involving usage of the incorrect type of equality test.  
The line:
 		if ($i == '-') {	#range
should read:
 		if ($i eq '-') {	#range
In the upper line, perl evaluates '-' to numeric zero.
The following patch will fix this, as well as fix the -s (suppress) option
to suppress blank lines.

I strongly encourage perl programmers to distinguish the two varieties
(string and numeric) of equality test to avoid this potentially serious pitfall.

Index: cut.pl
*** cut.pl~
--- cut.pl
**************
*** 97,103
  if ($clist) {
  	$j=1;
  	foreach $i (@list) {
! 		if ($i == '-') {	#range
  			$ptr=$offsets[$j];
  			$cnt=$lengths[$j++];
  			$printlist .= "substr(\$_,$ptr,$cnt), ";
--- 97,103 -----
  if ($clist) {
  	$j=1;
  	foreach $i (@list) {
! 		if ($i eq '-') {	#range
  			$ptr=$offsets[$j];
  			$cnt=$lengths[$j++];
  			$printlist .= "substr(\$_,$ptr,$cnt), ";
**************
*** 116,122
  line: while (<>) {
  	chop;
  	\$maxfld = $split;
! 	${print}next line if \$maxfld == 1;
  	$toend
  	$printlist
  }
--- 116,122 -----
  line: while (<>) {
  	chop;
  	\$maxfld = $split;
! 	${print}next line if \$maxfld <= 1;
  	$toend
  	$printlist
  }
-- 
Bob Best
uucp: ...{trwrb,hplabs}!felix!dhw68k!bob	InterNet: bob@dhw68k.cts.com