My mind is not in general compatibility mode, apparently.
Does this mean that you only allow the user to correct his
input? Otherwise, the state of your program has
changed since that step, because variables/objects have
been altered. So you need to revoke these alterations.
Checking for return values is really simple in perl:
#This example is wearn out to the bone due to it's general use
open FILE, 'data.txt' or die "Could not open data.txt: $!";
#in general, if function() returns either false or some true info:
function( @_ ) or redo MAIN;