In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/c93f220f65f795688d865624efa429565674530a?hp=766780a5859be97bb7b1cac537b429edd737d58b>
- Log ----------------------------------------------------------------- commit c93f220f65f795688d865624efa429565674530a Author: Aristotle Pagaltzis <[email protected]> Date: Wed Sep 7 22:20:52 2016 +0200 DirHandle: document as obsolete ----------------------------------------------------------------------- Summary of changes: lib/DirHandle.pm | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/DirHandle.pm b/lib/DirHandle.pm index 7493c00a54..100123364e 100644 --- a/lib/DirHandle.pm +++ b/lib/DirHandle.pm @@ -4,26 +4,37 @@ our $VERSION = '1.04'; =head1 NAME -DirHandle - supply object methods for directory handles +DirHandle - (obsolete) supply object methods for directory handles =head1 SYNOPSIS + # recommended approach since Perl 5.6: do not use DirHandle + if (opendir my $d, '.') { + while (readdir $d) { something($_); } + rewind $d; + while (readdir $d) { something_else($_); } + } + + # how you would use this module if you were going to use DirHandle; - $d = DirHandle->new("."); - if (defined $d) { + if (my $d = DirHandle->new(".")) { while (defined($_ = $d->read)) { something($_); } $d->rewind; while (defined($_ = $d->read)) { something_else($_); } - undef $d; } =head1 DESCRIPTION +B<There is no reason to use this module nowadays.> + The C<DirHandle> method provide an alternative interface to the opendir(), closedir(), readdir(), and rewinddir() functions. -The only objective benefit to using C<DirHandle> is that it avoids -namespace pollution by creating globs to hold directory handles. +Up to Perl 5.5, opendir() could not autovivify a directory handle from +C<undef>, so using a lexical handle required using a function from L<Symbol> +to create an anonymous glob, which took a separate step. +C<DirHandle> encapsulates this, which allowed cleaner code than opendir(). +Since Perl 5.6, opendir() alone has been all you need for lexical handles. =cut -- Perl5 Master Repository
