martell has asked for the wisdom of the Perl Monks concerning the following question:
Hi Monks
I was wondering for thoughts from you about the new 'switch' feature in combination with loop control statements like 'last' and 'next'.
When I first used the 'switch' statement, within a loop, I was suprised by the behaviour when used in combination with the last statement. Without prior thought I programmed:
use feature "switch"; foreach $a (1..2) { for ($a) { when (1) {print "1\n"; last;} when (2) {print "2\n"; last;} } }
This prints:
1 2
instead what I expected (in my case, the 'when' blocks are containing loop termination conditions I wanted to check before doing some work in the foreach block):
1
The code is easily adapted for my intention:
use feature "switch"; LOOP: foreach $a (1..2) { for ($a) { when (1) {print "1\n"; last LOOP;} when (2) {print "2\n"; last LOOP;} } }
I was wondering if this behaviour was also for other monks puzzling. I didn't expected that the 'last' statement in the switch statements controlled the flow within the switch statement. It easily solved of course and clearly mentionned in the docs. My fault for not reading them throughly.
But did you expected this behaviour when you used this feature for the first time?
Kind regards
Martell
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: using the feature 'switch' in loops
by ikegami (Patriarch) on Jul 29, 2014 at 22:29 UTC | |
|
Re: using the feature 'switch' in loops
by Anonymous Monk on Jul 29, 2014 at 19:37 UTC | |
by martell (Hermit) on Jul 30, 2014 at 16:36 UTC | |
by Anonymous Monk on Jul 30, 2014 at 17:01 UTC | |
by Anonymous Monk on Jul 30, 2014 at 17:21 UTC | |
|
Re: using the feature 'switch' in loops
by Anonymous Monk on Jul 29, 2014 at 19:34 UTC | |
|
Re: using the feature 'switch' in loops
by Anonymous Monk on Jul 30, 2014 at 11:44 UTC |