-
-
06 Oct 2018 04:36:52 UTC
- Distribution: IO-Handle-Util
- Module version: 0.02
- Source (raw)
- Browse (raw)
- Changes
- Homepage
- How to Contribute
- Repository
- Issues (0)
- Testers (5164 / 0 / 0)
- Kwalitee
Bus factor: 1- 72.83% Coverage
- License: perl_5
- Perl: v5.8.0
- Activity
24 month- Tools
- Download (36.58KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
NAME
IO::Handle::Prototype::Fallback - Create IO::Handle like objects using a set of callbacks.
SYNOPSIS
my $fh = IO::Handle::Prototype::Fallback->new( getline => sub { my $fh = shift; ... }, );
DESCRIPTION
This class provides a way to define a filehandle based on callbacks.
Fallback implementations are provided to the extent possible based on the provided callbacks, for both writing and reading.
SPECIAL CALLBACKS
This class provides two additional methods on top of IO::Handle, designed to let you implement things with a minimal amount of baggage.
The fallback methods are all best implemented using these, though these can be implemented in terms of Perl's standard methods too.
However, to provide the most consistent semantics, it's better to do this:
IO::Handle::Prototype::Fallback->new( __read => sub { shift @array; }, );
Than this:
IO::Handle::Prototype::Fallback->new( getline => sub { shift @array; }, );
Because the fallback implementation of
getline
implements all of the extra crap you'd need to handle to have a fully featured implementation.- __read
-
Return a chunk of data of any size (could use
$/
or not, it depends on you, unlikegetline
which probably should respect the value of$/
).This avoids the annoying
substr
stuff you need to do withread
. - __write $string
-
Write out a string.
This is like a simplified
print
, which can disregard$,
and$\
as well as multiple argument forms, and does not have the extrasubstr
annoyance ofwrite
orsyswrite
.
WRAPPING
If you provide a single reading related callback (
__read
,getline
orread
) then your callback will be used to implement all of the other reading primitives using a string buffer.These implementations handle
$/
in all forms (undef
, ref to number and string), all the funny calling conventions forread
, etc.FALLBACKS
Any callback that can be defined purely in terms of other callbacks in a way will be added. For instance
getc
can be implemented in terms ofread
,say
can be implemented in terms ofprint
,print
can be implemented in terms ofwrite
,write
can be implemented in terms ofprint
, etc.None of these require special wrapping and will always be added if their dependencies are present.
GLOB OVERLOADING
When overloaded as a glob a tied handle will be returned. This allows you to use the handle in Perl's IO builtins. For instance:
my $line = <$fh>
will not call the
getline
method natively, but the tied interface arranges for that to happen.Module Install Instructions
To install IO::Handle::Util, copy and paste the appropriate command in to your terminal.
cpanm IO::Handle::Util
perl -MCPAN -e shell install IO::Handle::Util
For more information on module installation, please visit the detailed CPAN module installation guide.