package PerlIO::via::chop; # Set the version info # Make sure we do things by the book from now on $VERSION = '0.01'; use strict; # Make sure the encoding/decoding stuff is available 1; sub PUSHED { bless \*PUSHED,$_[0] } sub FILL { readline( $_[1] ) } my %buffer; sub WRITE { my $buffer = $buffer{$_[2]}; if (defined $buffer) { print {$_[2]} $buffer; print {$_[2]} substr($_[1], 0, -1); $buffer{$_[2]} = substr($_[1], -1); return length($_[1]); } else { print {$_[2]} substr($_[1], 0, -1); $buffer{$_[2]} = substr($_[1], -1); return length($_[1]) - 1; } } #WRITE 1; __END__ =head1 NAME PerlIO::via::chop - PerlIO layer to chop the last byte outputted =head1 SYNOPSIS use PerlIO::via::chop; open( my $in,'<:via(chop)','file.txt' ); # no effect open( my $out,'>:via(chop)','file.txt' ); # last byte is chopped =head1 DESCRIPTION This module implements a PerlIO layer that chops the last byte written to the file. =head1 SEE ALSO L =head1 AUTHORS Autrijus Tang Eautrijus@autrijus.orgE =head1 COPYRIGHT Copyright 2002 by Autrijus Tang Eautrijus@autrijus.orgE. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See L =cut