man PerlIO::via::dynamic () - dynamic PerlIO layers

NAME

PerlIO::via::dynamic - dynamic PerlIO layers

SYNOPSIS

 open $fh, $fname;
 $p = PerlIO::via::dynamic->new
  (translate =>
    sub { $_[1] =~ s/\$Filename[:\w\s\-\.\/\\]*\$/\$Filename: $fname\$/e},
   untranslate =>
    sub { $_[1] =~ s/\$Filename[:\w\s\-\.\/\\]*\$/\$Filename\$/});
 $p->via ($fh);
 binmode $fh, $p->via; # deprecated

DESCRIPTION

CWPerlIO::via::dynamic is used for creating dynamic PerlIO layers. It is useful when the behavior or the layer depends on variables. You should not use this module as via layer directly (ie :via(dynamic)).

Use the constructor to create new layers, with two arguments: translate and untranslate. Then use CW$p-via ($fh)> to wrap the handle. Once <$fh> is destroyed, the temporary namespace for the IO layer will be removed.

Note that PerlIO::via::dynamic uses the scalar fields to reference to the object representing the dynamic namespace.

OPTIONS

translate
A function that translate buffer upon write.
untranslate
A function that translate buffer upon read.
use_read
Use CWREAD instead of CWFILL for the layer. Useful when caller expect exact amount of data from read, and the CWuntranslate function might return different length. By default CWPerlIO::via::dynamic creates line-based layer to make CWtranslate implementation easier.

AUTHORS

Chia-liang Kao <clkao@clkao.org>

COPYRIGHT

Copyright 2004 by Chia-liang Kao <clkao@clkao.org>.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See <http://www.perl.com/perl/misc/Artistic.html>