if ($proc_pid = fork) { # parent } elsif (defined $proc_pid) { exec $command, @args; die "can't exec $command @args: $!"; } else { die "can't fork: $!"; } if ($count_pid = fork) { # parent } elsif (defined $count_pid) { opendir DIR, $dir_to_be_watched or die "can't open $dir_to_be_watched: $!"; while (1) { # UPDATED -- who cares WHAT the files are? my $files = -2; # -2 for . and .. $files++ while defined readdir DIR; last if $files == $N; rewinddir DIR; } kill -TERM => $proc_pid; exit; } else { die "can't fork: $!"; } # parent can go on its merry way