in reply to returning to the outer loop
Named blocks used to be the GOTO answer for this sort of problem, but goto is frowned on because it tends to obscure code flow. Often there are better ways to structure your code so that you don't need an explicit equivalent of goto. One way to do that is to place your nested loops in a sub that is called from the outer loop.
Consider:
#!/usr/bin/perl -w use strict; my @kPatterns = ( ['aaaaa', 'bbbbb', 'ccccc', 'ddddd',], ['eeeee', 'fffff', 'ggggg', 'hhhhh',], ['iiiii', 'jjjjj', 'kkkkk', 'lllll',], ); for my $test ('yyjjjjjxx', 'ddddd') { my $match = scan($test); print "Matched $test using $match\n" if $match; } sub scan { my ($test) = @_; for my $patternList (@kPatterns) { for my $pattern (@$patternList) { return $pattern if $test =~ $pattern; } } return ; }
Prints:
Matched yyjjjjjxx using jjjjj Matched ddddd using ddddd
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: returning to the outer loop
by Laurent_R (Canon) on Sep 20, 2018 at 22:45 UTC | |
by GrandFather (Saint) on Sep 21, 2018 at 02:26 UTC | |
by Laurent_R (Canon) on Sep 21, 2018 at 08:00 UTC | |
by Anonymous Monk on Sep 21, 2018 at 20:19 UTC | |
|
Re^2: returning to the outer loop
by rizzo (Curate) on Sep 20, 2018 at 23:26 UTC | |
|
Re^2: returning to the outer loop
by nysus (Parson) on Sep 20, 2018 at 21:56 UTC | |
by GrandFather (Saint) on Sep 21, 2018 at 02:18 UTC | |
by stevieb (Canon) on Sep 20, 2018 at 22:01 UTC |