coming from a c++ background, I constantly type break instead of last only to be scolded by the syntax checker. If my faubles result in incorrectly executing program ( a mysterious error at that!) then I and many other C++ programmers will waste a lot of time hunting down a trivial bug. I understand the need for an implied given, but when faced with code like:
for @foo -> $bar { when /this/ { ... break; ... } when /that/ => { ... last; ... } when /the other/ => { ... next; ... } } I get really jittery...To me, it looks like they affect the loop, but instead one affects an implied given and the others affect the loop. This should at least be a very stern warning. Secondly, for @list -> ($bar, $baz) { when /this/ { ... } } is this equivalent to if( ($bar, $baz) =~ /this/ ) { ... } if so, what does that mean? Finally, if the correct syntax is: for $a, $b -> $c, $d then I would like to say that while this does mimic the C<my> syntax, it doesn't put identifiers and their values close to each other like for $a -> $c, $b -> $d does. This is not to be construed as a bad thing...in fact, it might promote people to not use the C< -> > for more than two or three values. Tanton ----- Original Message ----- From: "Austin Hastings" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, February 25, 2002 3:43 PM Subject: Re: Loop exiting > Currently, > > given $foo -> $bar > { > } > > can be thought of as > > foreach my $bar ($foo) > { > } > > Given the way people with expectations will interpret break, setting > break === last seems like the right thing to do. > > =Austin > > --- Larry Wall <[EMAIL PROTECTED]> wrote: > > [EMAIL PROTECTED] writes: > > : --- Larry Wall <[EMAIL PROTECTED]> wrote: > > : > Simon Cozens writes: > > : > : Larry Wall: > > : > : > Not the same concept exactly. I think a C<break> within a > > C<for> > > : > loop > > : > : > would be the same as a C<next>, not a C<last>. > > : > : > > : > : Doesn't this break C and Shell resonance? > > : > > > : > We've done that before. :-) > > : > > : Umm, doesn't break translate basically as "leave, now" rather than > > as > > : "hop to the loop nexus and consider leaving"? > > > > Sure, but it means "leave the switch now", not "leave the loop now". > > > > : What's your thinking in equating break w/ next? > > > > Only that > > > > for @foo { > > ... > > } > > > > can be thought of as shorthand for > > > > for @foo -> $temp { > > given $temp { > > ... > > } > > } > > > > I am also assuming that the break is only meaningful as a switch > > control, > > not a loop control. But I can see where it would be confusing. > > Perhaps > > C<break> should be illegal inside a C<for>, and the user forced to > > choose > > between C<next> and C<last>. > > > > Larry > > __________________________________________________ > Do You Yahoo!? > Yahoo! Sports - Coverage of the 2002 Olympic Games > http://sports.yahoo.com >