my $basedir = '/usr/data/www/you'; ## This is the directory to start with. my $req_dir = ''; ## This is the subdirectory you want, relative to $basedir opendir(DIR, "$basedir/$req_dir") || die "can't opendir $req_dir: $!"; @dir_records = readdir(DIR); @dir_records = sort @dir_records; closedir DIR; $file_count = 0; @dir_dirs = grep {-d "$basedir/$req_dir/$_"} @dir_records; # this stuffs @dir_dirs with the directories foreach $thisdir (@dir_dirs) { print "$thisdir (directory)\n"; } foreach $_ (@dir_records) { if (-f "$basedir/$req_dir/$_") { print "$_\n"; } }