my $thr = threads->create ( sub { while (1) { eval { while (1) { worker(); } }; if ($@) { print "Error Occured: <$@>.\n"; $@=(); sleep (1); } } } ) sub worker { open FILE_OUT, "> /root/xyz" or die "Can't open file: $!"; }