55 lines
916 B
Perl
55 lines
916 B
Perl
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;
|