#!/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