use Path::Iterator::Rule; ... my $rule = Path::Iterator::Rule->new; $rule->file->not_name( qr/${user_input}_ABC_\S*\.pdf/ ); my $next = $rule->iter( $doc_dir ); while (defined( my $file = $next->() )) { ... }