Aion-Fs
view release on metacpan or search on metacpan
lib/Aion/Fs/Cat.pm view on Meta::CPAN
package Aion::Fs::Cat;
use common::sense;
use overload fallback => 1,
'*{}' => sub { shift->{f} },
'-X' => \&_fileop,
'<>' => sub { shift->next },
'&{}' => sub {
my ($self) = @_;
sub { scalar $self->next }
},
'@{}' => sub { [shift->next] },
'""' => sub { "cat<${\shift->{path}}>" },
;
sub new {
my $cls = shift;
bless {@_}, ref $cls || $cls
}
sub path { shift->{path} }
sub next {
my $f = shift->{f};
<$f>
}
sub DESTROY {
my ($self) = @_;
close $self->{f};
}
my %OP;
sub _fileop {
my ($self, $op) = @_;
local $_ = $self->{f};
($OP{$op} //= eval "sub { -$op }" // die)->()
}
1;
__END__
=encoding utf-8
=head1 NAME
Aion::Fs::Cat - ÑайловÑй деÑкÑипÑÐ¾Ñ Ñ Ð°Ð²ÑозакÑÑÑием
=head1 SYNOPSIS
use Aion::Fs qw/lay/;
use Aion::Fs::Cat;
use Symbol;
my $file = "lay.test.txt";
lay $file, "xyz";
my $f = Symbol::gensym;
open $f, "<", $file;
$f = Aion::Fs::Cat->new(f => $f, path => $file);
-d $f # -> ""
-f $f # -> 1
read $f, my $buf, 1;
$buf # => x
<$f> # => yz
$f->path; # => lay.test.txt
undef $f;
=head1 DESCRIPTION
СодеÑÐ¶Ð¸Ñ ÑайловÑй деÑкÑипÑоÑ, коÑоÑÑй закÑÑваеÑÑÑ Ð² деÑÑÑÑкÑоÑе. РблагодаÑÑ Ð¿ÐµÑегÑÑзке опеÑаÑоÑов C<*{}>, C<-X> и C<< E<lt>E<gt> >> ÑабоÑÐ°ÐµÑ Ñо вÑем...
ÐÑполÑзÑеÑÑÑ Ð² LL<https://metacpan.org/pod/Aion::Fs#icat-(%3B%24path)>.
=head1 SUBROUTINES
=head2 new (%args)
ÐонÑÑÑÑкÑоÑ.
=head2 path ()
ÐÑÑÑ Ðº ÑайлÑ.
=head2 next ()
СледÑÑÑÐ°Ñ ÑÑÑока.
=head2 DESTROY ()
ÐеÑÑÑÑкÑоÑ. ÐакÑÑÐ²Ð°ÐµÑ ÑайловÑй деÑкÑипÑоÑ.
=head1 AUTHOR
Yaroslav O. Kosmina L<mailto:dart@cpan.org>
( run in 1.616 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )