in reply to Perl Labeled Blocks
... but the problem is its not the one that i want labeled blocks to do for me. why is it so?
Because next is a loop control operator, not a goto. When you use next without a label, it transfers control to the top of the nearest enclosing loop.
next LABEL; allows you to transfer control to an enclosing loop, other than the nearest. So, you can do:
OUTER: for my $x ( 1 .. 10 ) { INNER:for my $y ( 1 .. 10 ) { #do stuff if( condition ) { next INNER; } else { next OUTER; } } }
In order to do what you are attempting to do, you need to use a goto, not a loop operator:
#!perl/bin/perl use strict; @_ = qw/perl is great/; for (@_) { if ($_ eq "perl") { print "$_\n"; next; } else { goto LABEL } LABEL: print "The word was: $_\n"; };; __OUTPUT__ perl The word was: is The word was: great
|
|---|