PATH:
usr
/
share
/
perl5
package DirHandle; our $VERSION = '1.05'; =head1 NAME 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; if (my $d = DirHandle->new(".")) { while (defined($_ = $d->read)) { something($_); } $d->rewind; while (defined($_ = $d->read)) { something_else($_); } } =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. 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 require 5.000; use Carp; use Symbol; sub new { @_ >= 1 && @_ <= 2 or croak 'usage: DirHandle->new( [DIRNAME] )'; my $class = shift; my $dh = gensym; if (@_) { DirHandle::open($dh, $_[0]) or return undef; } bless $dh, $class; } sub DESTROY { my ($dh) = @_; # Don't warn about already being closed as it may have been closed # correctly, or maybe never opened at all. local($., $@, $!, $^E, $?); no warnings 'io'; closedir($dh); } sub open { @_ == 2 or croak 'usage: $dh->open(DIRNAME)'; my ($dh, $dirname) = @_; opendir($dh, $dirname); } sub close { @_ == 1 or croak 'usage: $dh->close()'; my ($dh) = @_; closedir($dh); } sub read { @_ == 1 or croak 'usage: $dh->read()'; my ($dh) = @_; readdir($dh); } sub rewind { @_ == 1 or croak 'usage: $dh->rewind()'; my ($dh) = @_; rewinddir($dh); } 1;
[+]
CPAN
[-] DBM_Filter.pm
[open]
[+]
Compress
[+]
..
[+]
Math
[-] AnyDBM_File.pm
[open]
[-] diagnostics.pm
[open]
[+]
warnings
[+]
IPC
[-] charnames.pm
[open]
[-] vmsish.pm
[open]
[-] meta_notation.pm
[open]
[-] vars.pm
[open]
[-] filetest.pm
[open]
[+]
Time
[-] fields.pm
[open]
[+]
User
[+]
DBM_Filter
[+]
Class
[-] deprecate.pm
[open]
[+]
Thread
[-] FileHandle.pm
[open]
[-] strict.pm
[open]
[-] Thread.pm
[open]
[-] XSLoader.pm
[open]
[-] SelectSaver.pm
[open]
[+]
unicore
[-] utf8.pm
[open]
[-] CORE.pod
[open]
[-] AutoSplit.pm
[open]
[+]
Module
[+]
overload
[+]
Term
[-] if.pm
[open]
[-] UNIVERSAL.pm
[open]
[-] overloading.pm
[open]
[+]
Tie
[-] AutoLoader.pm
[open]
[-] autouse.pm
[open]
[-] feature.pm
[open]
[+]
I18N
[+]
Pod
[-] Dumpvalue.pm
[open]
[+]
vendor_perl
[+]
Text
[+]
Locale
[+]
ExtUtils
[-] DirHandle.pm
[open]
[-] open.pm
[open]
[-] Benchmark.pm
[open]
[-] integer.pm
[open]
[+]
Unicode
[-] perl5db.pl
[open]
[-] Safe.pm
[open]
[+]
Memoize
[-] overload.pm
[open]
[-] blib.pm
[open]
[-] Symbol.pm
[open]
[-] subs.pm
[open]
[-] English.pm
[open]
[+]
IO
[+]
URI
[-] Test.pm
[open]
[-] warnings.pm
[open]
[+]
Attribute
[+]
File
[+]
Net
[+]
encoding
[-] bytes_heavy.pl
[open]
[+]
Getopt
[+]
Search
[-] URI.pm
[open]
[-] DB.pm
[open]
[-] base.pm
[open]
[-] FindBin.pm
[open]
[+]
pod
[-] Memoize.pm
[open]
[+]
B
[-] sort.pm
[open]
[-] sigtrap.pm
[open]
[-] NEXT.pm
[open]
[-] Internals.pod
[open]
[-] less.pm
[open]
[+]
Config
[-] FileCache.pm
[open]
[-] PerlIO.pm
[open]
[-] SelfLoader.pm
[open]
[-] locale.pm
[open]
[-] bytes.pm
[open]
[-] _charnames.pm
[open]
[-] dumpvar.pl
[open]
[+]
Devel