use File::Glob ':glob'; my @dirs = grep { -d } bsd_glob('/usr/darren/' . $some_magic_globstr_here, GLOB_ERR); die "glob: $!" if GLOB_ERROR; #### opendir my $dh, /usr/darren' or die "opendir: $!"; my @dirs = grep { -d } map { "/usr/darren/$_" } grep { !/^\.\.?$/ } readdir $dh; closedir $dh or die "closedir: $dh"; # this line optional