#!/usr/bin/perl use strict; use warnings; sub mysub{ #Do some clean up before exit. }; my $fh; unless (open ( $fh, '>' , "file.txt")) { mysub(); print "Cannot open file.txt for writing.\n"; exit 0 ; }; my $condition = 0; do { my $text = "Text to be written over file.txt.\n"; print { $fh } "$text"; #... other stuff goes on, eventually changing $condition to 1 } until ($condition); close ($fh); mysub(); exit 1;