<<I would make that for my $loopiter ( 1..$loopmax )
and get rid of the two subtractions.>> I LIKE IT! While brewing tea, it occurred to me to speculate on how a mischievous person would go about killing this script. The one thing that occurred to me is that you could invoke the script with a nonsense value like CATEGORY=bubububu. That would lead to an empty set of terms with inscrutable (to me) results. I tried to shortstop that issue with the following addition to the code: while (<FH>) { if ( $topic eq "REVIEW" ) { $termnum[ $ops++ ] = $_; } elsif (/$topic/) { $termnum[ $ops++ ] = $_; } else {die "NO SUCH CATEGORY";} #ADDED LINE } Does that look reasonable? Other attempts to send the script garbage would just cause it to tell you your answer was wrong, I think. John M Rathbun MD ________________________________ From: Jim Gibson <jimsgib...@gmail.com> To: Perl Beginners <beginners@perl.org> Sent: Mon, September 17, 2012 10:18:16 PM Subject: Re: Proposed correction On Sep 17, 2012, at 6:52 AM, Shlomi Fish wrote: > Hi, > > I apologise for having sent that to Dr. Rathbun in private - that was not my > intention but a misuse of software. Resending to the list. > > On Sun, 16 Sep 2012 19:31:01 -0700 (PDT) > jmrhide-p...@yahoo.com wrote: > >> for (my $loopiter = 0; $loopiter < $loopmax; $loopiter++) { #1 >> if ($loopiter >= ($loopmax - 1)) { die "Loop number >> $loopnum has iterated $loopiter times" } > > This line (#2) will throw an exception in the final iteration of the loop, > so it's not good. I think you missed the part where the loop is supposed to terminate before $loopiter becomes equal to $loopmax, and if it does not terminate before then, it is an error. > You can use: > > for my $loopiter (0 .. $loopmax-1) > { > } I would make that for my $loopiter ( 1..$loopmax ) and get rid of the two subtractions. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/