#!/usr/bin/perl use strict; use warnings; use Data::Dumper; sub get_perl_files { my $path = shift; opendir (my $dh, $path) or die "Unable to open $path: $!"; my @files = map { $path . '/' . $_ } grep { !/^\.{1,2}$/ } readdir ($dh); return grep { (/\.pl/) && (! -l $_) } map { -d $_ ? get_perl_files ($_) : $_ } @files; } my @files_returned = get_perl_files("/home/tinyos/Monks"); print Dumper \@files_returned; __END__ $ perl test.pl $VAR1 = [ '/home/tinyos/Monks/test.pl~', '/home/tinyos/Monks/cmp.pl', '/home/tinyos/Monks/df.pl', '/home/tinyos/Monks/mySuDir/test_subdir.pl', '/home/tinyos/Monks/parallel_ssh.pl', '/home/tinyos/Monks/test_2.pl~', '/home/tinyos/Monks/sshutle.pl', '/home/tinyos/Monks/test_2.pl', '/home/tinyos/Monks/excel.pl', '/home/tinyos/Monks/test.pl', '/home/tinyos/Monks/parsingvalues.pl' ];