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;
[-] URI.pm
[edit]
[+]
Compress
[+]
Math
[+]
Term
[+]
Module
[-] bytes.pm
[edit]
[+]
User
[-] Dumpvalue.pm
[edit]
[+]
URI
[-] bytes_heavy.pl
[edit]
[-] SelectSaver.pm
[edit]
[+]
Locale
[+]
Thread
[-] charnames.pm
[edit]
[-] vmsish.pm
[edit]
[-] XSLoader.pm
[edit]
[-] Memoize.pm
[edit]
[-] FileCache.pm
[edit]
[-] _charnames.pm
[edit]
[-] filetest.pm
[edit]
[-] FileHandle.pm
[edit]
[-] base.pm
[edit]
[-] overload.pm
[edit]
[-] NEXT.pm
[edit]
[+]
ExtUtils
[-] Internals.pod
[edit]
[-] Test.pm
[edit]
[-] deprecate.pm
[edit]
[-] DBM_Filter.pm
[edit]
[-] less.pm
[edit]
[+]
pod
[+]
Pod
[-] feature.pm
[edit]
[-] UNIVERSAL.pm
[edit]
[-] overloading.pm
[edit]
[-] Safe.pm
[edit]
[-] utf8.pm
[edit]
[+]
warnings
[-] perl5db.pl
[edit]
[+]
IO
[+]
Devel
[-] autouse.pm
[edit]
[+]
CPAN
[-] Symbol.pm
[edit]
[+]
Net
[-] fields.pm
[edit]
[-] open.pm
[edit]
[-] meta_notation.pm
[edit]
[-] English.pm
[edit]
[-] PerlIO.pm
[edit]
[+]
..
[+]
Memoize
[-] locale.pm
[edit]
[-] blib.pm
[edit]
[-] FindBin.pm
[edit]
[+]
Class
[-] integer.pm
[edit]
[+]
B
[-] DirHandle.pm
[edit]
[-] CORE.pod
[edit]
[-] sigtrap.pm
[edit]
[+]
File
[-] AnyDBM_File.pm
[edit]
[+]
Time
[+]
Attribute
[+]
DBM_Filter
[-] Thread.pm
[edit]
[+]
overload
[+]
Config
[-] DB.pm
[edit]
[+]
Tie
[-] Benchmark.pm
[edit]
[-] vars.pm
[edit]
[+]
unicore
[-] subs.pm
[edit]
[-] AutoSplit.pm
[edit]
[-] warnings.pm
[edit]
[+]
Search
[+]
IPC
[+]
Unicode
[-] strict.pm
[edit]
[-] diagnostics.pm
[edit]
[+]
vendor_perl
[-] AutoLoader.pm
[edit]
[+]
I18N
[-] dumpvar.pl
[edit]
[+]
encoding
[+]
Getopt
[-] if.pm
[edit]
[-] SelfLoader.pm
[edit]
[-] sort.pm
[edit]
[+]
Text