use File::Find::Rule qw/ find rule/; my @files = rule()->file() ->name( '*.dpt' ) ->grep( $pattern ) ->in( $dir ); #### my @files = find( file => name => '*.dpt', grep => qr/pattern/, in => $dir, ); #### my @files = rule( file => name => '*.dpt', grep => qr/pattern/, )->in( $dir ); #### rule( file => name => '*.dpt', grep => qr/pattern/, )->exec(sub { my( $shortname, $path, $fullname ) = @_; ## do something with $fullname :) return !!0; # discard filename } ) ->in( $dir );