in reply to redo question ( part 'catching segfaults' )
OK:
my $foo = 1; BLOCK: { last if $foo > 10; eval { print $foo++, "\n"; }; redo; } [download]
my $foo = 1; eval { last if $foo > 10; print $foo++, "\n"; redo; } [download]