dirhandle.pm

来自「MSYS在windows下模拟了一个类unix的终端」· PM 代码 · 共 89 行

PM
89
字号
package DirHandle;our $VERSION = '1.00';=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 DESCRIPTIONThe C<DirHandle> method provide an alternative interface to theopendir(), closedir(), readdir(), and rewinddir() functions.The only objective benefit to using C<DirHandle> is that it avoidsnamespace pollution by creating globs to hold directory handles.=head1 NOTES=over 4=item *On Mac OS (Classic), the path separator is ':', not '/', and the current directory is denoted as ':', not '.'. You should be careful about specifying relative pathnames. While a full path always begins with a volume name, a relative pathname should always begin with a ':'.  If specifying a volume name only, a trailing ':' is required.=back=cutrequire 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;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?