in reply to Perl action on cancellation

Not sure what you mean by 'cancelling a program', but does:
END {defined $old_name and defined $new_name and rename($old_name, $new_name) || warn "Oops: $!"}
do the trick for you?