This is a technique that allows common error handling for a block of code to be managed without resorting to error state variables, labeled statements or gotos.

It's most useful where some common error handling code needs to be executed before continuing with normal execution.

Sample code prints one of:

all the way Do various stuff in the block Skipped the early exit Skipped an error detection Continue here regardless early exit Do various stuff in the block Continue here regardless found error Do various stuff in the block Skipped the early exit Errors handled here Continue here regardless
use warnings; use strict; $_ = ('all the way', 'early exit', 'found error')[rand (3)]; print "$_\n"; {# Block to allow common error handling in continue print "Do various stuff in the block\n"; last if /early exit/; print "Skipped the early exit\n"; next if /found error/; print "Skipped an error detection\n"; last; # Falls through to error handling if omitted } continue { print "Errors handled here\n"; } print "Continue here regardless\n";