Returns the next directory entry for a directory opened byopendir
. If used in list context, returns all the rest of the entries in the directory. If there are no more entries, returns the undefined value in scalar context and the empty list in list context.
If you're planning to filetest the return values out of areaddir
, you'd better prepend the directory in question. Otherwise, because we didn'tchdir
there, it would have been testing the wrong file.
opendir(my $dh, $some_dir) || die "Can't opendir $some_dir: $!";my @dots = grep { /^\./ && -f "$some_dir/$_" } readdir($dh);closedir $dh;
As of Perl 5.12 you can use a barereaddir
in awhile
loop, which will set$_
on every iteration. If either areaddir
expression or an explicit assignment of areaddir
expression to a scalar is used as awhile
/for
condition, then the condition actually tests for definedness of the expression's value, not for its regular truth value.
opendir(my $dh, $some_dir) || die "Can't open $some_dir: $!";while (readdir $dh) { print "$some_dir/$_\n";}closedir $dh;
To avoid confusing would-be users of your code who are running earlier versions of Perl with mysterious failures, put this sort of thing at the top of your file to signal that your code will workonly on Perls of a recent vintage:
use 5.012; # so readdir assigns to $_ in a lone while test
Perldoc Browser is maintained by Dan Book (DBOOK). Please contact him via theGitHub issue tracker oremail regarding any issues with the site itself, search, or rendering of documentation.
The Perl documentation is maintained by the Perl 5 Porters in the development of Perl. Please contact them via thePerl issue tracker, themailing list, orIRC to report any issues with the contents or format of the documentation.