summaryrefslogtreecommitdiff
path: root/lib/DirHandle.pm
diff options
context:
space:
mode:
authorAristotle Pagaltzis <pagaltzis@gmx.de>2016-09-07 22:20:52 +0200
committerAristotle Pagaltzis <pagaltzis@gmx.de>2017-06-10 00:03:15 +0200
commitc93f220f65f795688d865624efa429565674530a (patch)
tree3385e4a7a53445c73e584d519434a645b6e8d71e /lib/DirHandle.pm
parent766780a5859be97bb7b1cac537b429edd737d58b (diff)
downloadperl-c93f220f65f795688d865624efa429565674530a.tar.gz
DirHandle: document as obsolete
Diffstat (limited to 'lib/DirHandle.pm')
-rw-r--r--lib/DirHandle.pm23
1 files 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