in reply to How can I readdir and ! -d in one line

Personally I prefer Path::Class:

use Path::Class qw/dir/; my @files = sort grep { !$_->is_dir && $_->basename=~/^[^.]/ } dir($path)->children;

Alternatively, a core-only way to do it is:

use File::Spec::Functions qw/ no_upwards catfile catdir /; opendir my $dh, $path or die "$path: $!"; my @files = sort map { catfile($path,$_) } grep { ! -d catdir($path,$_) && /^[^.]/ } no_upwards readdir $dh; closedir $dh;