---
name: "PerlIO::eol"
section: "3pm"
platform: "linux"
package: "libperlio-eol-perl"
version: "0.19-1+b3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/PerlIO::eol"
---

# PerlIO::eol(3pm)

PerlIO layer for normalizing line endings

## 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
    use PerlIO::eol qw( eol_is_mixed );
    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.

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