#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use File::Find::Rule; my @dirs = @ARGV ? @ARGV : ('.'); my $level = shift // 2; my @files = File::Find::Rule->file() ->name('*.txt') ->maxdepth($level) ->in(@dirs); print Dumper(\@files); __END__ $ perl main.pl $VAR1 = [ 'test.txt', 'counts.txt', 'SubFolder/foo.txt' ];