NAME
PerlIO::eol - PerlIO layer for normalizing line endings
VERSION
This document describes version 0.18 of PerlIO::eol, released December 18, 2006.
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
my
$pos
= eol_is_mixed(
"mixed\nstring\r"
);
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.
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>.
COPYRIGHT
Copyright 2004-2006 by Audrey Tang <audreyt@audreyt.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.