Initial Commit
This commit is contained in:
54
database/perl/vendor/lib/IO/All/STDIO.pm
vendored
Normal file
54
database/perl/vendor/lib/IO/All/STDIO.pm
vendored
Normal file
@@ -0,0 +1,54 @@
|
||||
use strict; use warnings;
|
||||
package IO::All::STDIO;
|
||||
|
||||
use IO::All -base;
|
||||
use IO::File;
|
||||
|
||||
const type => 'stdio';
|
||||
|
||||
sub stdio {
|
||||
my $self = shift;
|
||||
bless $self, __PACKAGE__;
|
||||
return $self->_init;
|
||||
}
|
||||
|
||||
sub stdin {
|
||||
my $self = shift;
|
||||
$self->open('<');
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub stdout {
|
||||
my $self = shift;
|
||||
$self->open('>');
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub stderr {
|
||||
my $self = shift;
|
||||
$self->open_stderr;
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub open {
|
||||
my $self = shift;
|
||||
$self->is_open(1);
|
||||
my $mode = shift || $self->mode || '<';
|
||||
my $fileno = $mode eq '>'
|
||||
? fileno(STDOUT)
|
||||
: fileno(STDIN);
|
||||
$self->io_handle(IO::File->new);
|
||||
$self->io_handle->fdopen($fileno, $mode);
|
||||
$self->_set_binmode;
|
||||
}
|
||||
|
||||
sub open_stderr {
|
||||
my $self = shift;
|
||||
$self->is_open(1);
|
||||
$self->io_handle(IO::File->new);
|
||||
$self->io_handle->fdopen(fileno(STDERR), '>') ? $self : 0;
|
||||
}
|
||||
|
||||
# XXX Add overload support
|
||||
|
||||
1;
|
||||
Reference in New Issue
Block a user