my $timeout = time + 10; # method 1 # --file still old-- --under 10 secs passed-- 1 while (time - stat($file)[9] < 100 and $timeout > time); # number 2 - very similar sleep(1) while (time - stat($file)[9] < 100 and $timeout > time); # then proceed if (time - stat($file)[9] < 100) { # file updated, so do stuff } else { # child screwed up somewhere so log error }