piezocuttlefish has asked for the wisdom of the Perl Monks concerning the following question:
I'm solving exercise 15-1 in the Llama, and I've run across a peculiarity I don't understand. In my program, I use the following loop:
for ( print "Please enter your guess from " . MINGUESS . " to " . MA +XGUESS . ": "; <>; print "Try again. Please enter your new guess from " . MINGUE +SS . " to " . MAXGUESS . ": ") { chomp; when ( '' ) { last; } when ( 'quit' ) { last; } when ( $iTarget ) { last; } default { print "\tYour guess of $_ was too " . ($_ < $iTarget ? " +small." : "large.") . "\n"; } }
The first time through the loop, the code executes as expected. If a second time through is necessary, the program immediately dies with "Can't use when() outside a topicalizer at (line number corresponding to 'default' line).", before the third section of the for loop conditions is able to execute. Is a for loop not a sufficiently good topicalizer? What gives?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: When in the course of Perl topicalizers
by ikegami (Patriarch) on Jun 28, 2010 at 23:39 UTC | |
by piezocuttlefish (Initiate) on Jul 07, 2010 at 01:13 UTC |