What exactly is so bad about using next from within an eval (the one used for exception handling) that it's worth a warning?
I have a program structured something like this
#!/usr/bin/perl -lw use strict; use diagnostics; sub do_foo { die "err" if $_==2; $_!=4 } sub do_bar { "..." } for (1..5) { eval { next unless do_foo(); next unless do_bar(); #... 1; } or do { warn $@; next; }; print; } __END__ 1 err at ./test.pl line 5. 3 Exiting eval via next at ./test.pl line 10 (#1) (W exiting) You are exiting an eval by unconventional means, such +as a goto, or a loop control statement. 5
The idea is to abort the current iteration prematurely if one of the do_*() functions returned false, or if some exception occurred. In the sample code this is emulated for iteration 2 and 4.
The code seems to do what I want, and I know I can disable the warning, but I would like to know if there are any gotchas. The diagnostics message merely tells me what I'm doing, but not the reasoning behind it being a warning in the first place.
In reply to "next" from within eval {} ? by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |