Name
Tie::Handle::Base - A base class for tied filehandles
Synopsis
package Tie::Handle::Mine;
use parent 'Tie::Handle::Base';
sub WRITE {
my $self = shift;
print STDERR "Debug: Output '$_[0]'\n";
return $self->SUPER::WRITE(@_);
}
Then use your custom tied handle:
open my $fh, '>', $filename or die $!;
$fh = Tie::Handle::Mine->new($fh); # replace orig. handle with tied
print $fh "Hello, World"; # debug message will be printed
close $fh;
Description
A base class for tied filehandles similar to Tie::StdHandle, but with a few important differences.
The
tiedobject is a hashref, so that subclasses have an easier time storing information in the object hash. The inner handle which is wrapped by this tied handle should be passed to itsTIEHANDLEand is stored with the hash key_innerhandle. Subclasses should consider all fields with an underscore as reserved. If no handle is passed toTIEHANDLE, it will create a new anonymous one as the inner handle.It provides a constructor
newwhich will create a new lexical filehandle,tieit to the class, and return that filehandle. Any arguments toneware passed through toTIEHANDLE, including the (optional) inner handle as the first argument. Subclasses may choose to overridenewand/orTIEHANDLEto modify this behavior.A few limitations that exist in Tie::StdHandle (at least versions up to and including 4.4) have been lifted:
BINMODEaccepts theLAYERargument, andWRITEwill return the length of the string written (similar caveats in regards to Unicode/UTF-8 data as documented in syswrite apply).Although the functions
PRINTandPRINTFare implemented in terms ofWRITE, so that you can modify the output behavior by only overridingWRITE,WRITEitself is implemented in terms of a function_WRITEwhich takes a filehandle and emulatessyswritebehavior using the coreprint. This might be an important detail to you if you are overriding any of these functions; see the code for details.
This documentation describes version 0.02 of this module.
Notes
See Also: perltie, "tie" in perlfunc, Tie::Handle, Tie::StdHandle
The full list of functions that tied handles can/should implement is:
BINMODE, CLOSE, DESTROY, EOF, FILENO, GETC, OPEN, PRINT,
PRINTF, READ, READLINE, SEEK, TELL, TIEHANDLE, UNTIE, WRITE
Author, Copyright, and License
Copyright (c) 2017 Hauke Daempfling (haukex@zero-g.net) at the Leibniz Institute of Freshwater Ecology and Inland Fisheries (IGB), Berlin, Germany, http://www.igb-berlin.de/
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.