# opens a "cursor" on the directory entries # works kind of like open(...) but for directories rather # than files opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!"; # calls readdir(DIR) in list context - so that means that # all directory entries are returned at once. # then it passes the array of local file names through grep # grep selects members of an array based on the return # value of the {...} bit. # # $_ - a member of the array returned by readdir(DIR) # i.e. the local name of a file in the directory $some_dir # # /^\./ - selects only local file names beginning with dots. # this is short for $_ =~ /^\./ # # -f "$some_dir/$_" - checks to see if the fully qualified path # "$some_dir/$_" is an existing file. @dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR); # like close() but for directories closedir DIR;