use Filesys::Tree qw/tree/; my $sysTree = tree({ 'full' => 1,'max-depth' => 3,'pattern' => qr/\.rtf|\.ftp$/ } ,'.'); files($sysTree); sub files { my %treeree = %{+shift}; for (keys %tree) { if ($tree{$_}->{type} eq 'f'){ print $_,"\n" }elsif ($tree{$_}->{type} eq 'd') { files($tree{$_}->{contents}); } } }