logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

PerlIO::via::dynamic - dynamic PerlIO layers

Authors

       Chia-liang Kao <clkao@clkao.org>

Description

       "PerlIO::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
       "$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.

Name

       PerlIO::via::dynamic - dynamic PerlIO layers

Options

       translate
           A function that translate buffer upon write.

       untranslate
           A function that translate buffer upon read.

       use_read
           Use  "READ"  instead  of  "FILL"  for the layer.  Useful when caller expect exact amount of data from
           read, and the "untranslate" function might return different length.

           By default "PerlIO::via::dynamic" creates line-based layer to make "translate" implementation easier.

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

See Also