#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11108019 use warnings; my %processed; while( 1 ) { my %files = map +($_ => 1), glob '/root/fd/fg/*.txt'; for my $file ( grep !$processed{$_}, keys %files ) { # open and process $file here } %processed = %files; # clean up %processed sleep 10; # or some useful sleep time }