use File::Find::Rule qw( ); # Only delete files created more than 60 seconds ago. my $old = time() + 60; my @to_move = File::Find::Rule ->file() ->name( 'temp*' ) ->ctime( ">=$old" ) ->in( $dir );