PerlIO::encoding#
Open a filehandle with a transparent character-set encoding filter.
This is a PerlIO layer implementation. It registers a PerlIO layer vtable (PerlIO_encode) that perl5’s PerlIO system calls for I/O operations on handles opened with :encoding(...).
The layer works by overloading ”fill“ and ”flush“ methods of PerlIOBuf:
”fill“ reads bytes from the layer below, calls Encode->decode() to convert to UTF-8, and presents the result to layers above.
”flush“ takes UTF-8 data from the write buffer, calls Encode->encode() to convert to the target encoding, and writes to the layer below.
encoding.xs struct PerlIOEncode extends PerlIOBuf with: bufsv — SV buffer seen by layers above dataSV — data read from layer below (pending bytes) enc — the Encode encoding object chk — CHECK flag for encode/decode calls flags — NEEDS_LINES flag inEncodeCall — re-entrancy guard
The BOOT section:
Loads Encode module if not already loaded (via load_module)
Fetches
Encode::STOP_AT_PARTIALandEncode::LEAVE_SRCconstantsRegisters the ”encoding“ PerlIO layer via PerlIO_define_layer
Functions#
Other Functions#
pop_result#
Pop a single SV result off the Perl stack (equivalent of SPAGAIN; POPs). Returns a p5api SV*.