Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package DirHandle;
=head1 NAME
DirHandle - supply object methods for directory handles
=head1 SYNOPSIS
use DirHandle; $d = new DirHandle "."; if (defined $d) { while (defined($_ = $d->read)) { something($_); } $d->rewind; while (defined($_ = $d->read)) { something_else($_); } undef $d; }
=head1 DESCRIPTION
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.
=cut
require 5.000; use Carp; use Symbol;
sub new { @_ >= 1 && @_ <= 2 or croak 'usage: new DirHandle [DIRNAME]'; my $class = shift; my $dh = gensym; if (@_) { DirHandle::open($dh, $_[0]) or return undef; } bless $dh, $class; }
sub DESTROY { my ($dh) = @_; 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;
|