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::eol - PerlIO layer for normalizing line endings

Authors

       Audrey Tang <autrijus@autrijus.org>.

       Janitorial help by Gaal Yahas <gaal@forum2.org>.

       Inspired by PerlIO::nline by Ben Morrow, <PerlIO-eol@morrow.me.uk>.

Description

       This layer normalizes any of "CR", "LF", "CRLF" and "Native" into the designated line ending.  It works
       for both input and output handles.

       If you specify two different line endings joined by a "-", it will use the first one for reading and the
       second one for writing.  For example, the "LF-CRLF" encoding means that all input should be normalized to
       "LF", and all output should be normalized to "CRLF".

       By default, data with mixed newlines are normalized silently.  Append a "!"  to the line ending will
       raise a fatal exception when mixed newlines are spotted.  Append a "?" will raise a warning instead.

       It is advised to pop any potential ":crlf" or encoding layers before this layer; this is usually done
       using a ":raw" prefix.

       This module also optionally exports a "eol_is_mixed" function; it takes a string and returns the position
       of the first inconsistent line ending found in that string, or 0 if the line endings are consistent.

       The "CR", "LF", "CRLF" and "NATIVE" constants are also exported at request.

Exports

CR
       A carriage return constant.

   CRLF
       A carriage return/line feed constant.

   LF
       A line feed constant.

   NATIVE
       The native line ending.

   eol_is_mixed
       This module also optionally exports a "eol_is_mixed" function; it takes a string and returns the position
       of the first inconsistent line ending found in that string, or 0 if the line endings are consistent.

Name

       PerlIO::eol - PerlIO layer for normalizing line endings

Synopsis

           binmode STDIN, ":raw:eol(LF)";
           binmode STDOUT, ":raw:eol(CRLF)";
           open FH, "+<:raw:eol(LF-Native)", "file";

           binmode STDOUT, ":raw:eol(CRLF?)"; # warns on mixed newlines
           binmode STDOUT, ":raw:eol(CRLF!)"; # dies on mixed newlines

           use PerlIO::eol qw( eol_is_mixed );
           my $pos = eol_is_mixed( "mixed\nstring\r" );

Version

       This document describes version 0.18 of PerlIO::eol, released December 18, 2006.

See Also