eval { last; }; warn $@ || 'no error'; for (1) { eval { last; }; } warn $@ || 'no error'; #### Can't "last" outside a loop block at x.pl line 2. no error at x.pl line 11.