in reply to Useful uses of redo?

For breaking out of a deep loop in Perl I would suggest using last and named loops instead of goto. I've only seen 2 necessary uses of the traditional goto in Perl, and that is not one of them.

For redo, look at the implementation of Carp::Heavy in the standard distribution. You could write long_error_loc and short_error_loc without using redo, but I think that it would not read as naturally.