Your one liner is no longer really one line if you go that way. For the OP's solution, you'll need to be able to construct some magic looking glob string with '*' and '.*', and you'll have to weed out '.' and '..' as well. Assuming you can do that easily, you'll have something like this...
... which IMHO isn't shorter or easier to comprehend/maintain than this ...use File::Glob ':glob'; my @dirs = grep { -d } bsd_glob('/usr/darren/' . $some_magic_globstr_h +ere, GLOB_ERR); die "glob: $!" if GLOB_ERROR;
... esp if you have to change what is matched in the future, but YMMV.opendir my $dh, /usr/darren' or die "opendir: $!"; my @dirs = grep { -d } map { "/usr/darren/$_" } grep { !/^\.\.?$/ } re +addir $dh; closedir $dh or die "closedir: $dh"; # this line optional
In reply to Re^4: get directory listing
by bluto
in thread get directory listing
by darrengan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |