This and other RFCs are available on the web at
  http://dev.perl.org/rfc/

=head1 TITLE

Standardize input record separator (for portability)

=head1 VERSION

    Maintainer: N. Hao Ching <[EMAIL PROTECTED]>
    Date: 10 Aug 2000
    Version: 3
    Mailing List: [EMAIL PROTECTED]
    Number: 69

=head1 ABSTRACT

The default input record separator is not safe for all input files
on all platforms.  There should also be support for Unicode line
separator (U+2028) and paragraph separator (U+2029).

=head1 DESCRIPTION

The input record separator should match the platform's C compiler
mappings of "\r\n" (CRLF), "\n" (LF) and "\r" (CR), which are often
(but not always, e.g., EBCDIC-based platforms [Peter Prymmer]):

    000D 000A
    000A
    000D

For Unicode-capable platforms, the input record separator should
also match:

    2028
    2029

Given this input file:

    D O S CR LF    0044 004F 0053 000D 000A
    U n i x  LF    0055 006E 0069 0078 000A
    M a c CR       004D 0061 0063 000D
    l i n e  LS    006C 0069 006E 0065 2028
    p a r a  PS    0070 0061 0072 0061 2029
    l i n e        006C 0069 006E 0065

This should work as expected on as many platforms as possible:

    my @lines = <FH>;

The @lines array should contain six elements.

Bart Lateur has suggested differentiating between ASCII-compatible
and UTF-16.  Perhaps a flag?

    {
        local $utf16 = 1;
        my @lines = <FH>;
    }

The binmode function should treat data as binary and not translate
line disciplines.  (No one objects to this so far?)

Whether $/ will remain in Perl 6 is uncertain, so this is not
necessarily about $/.

=head1 IMPLEMENTATION

Bart Lateur suggested using a dedicated DFA regex engine.

=head1 REFERENCES

    perlport: http://www.pudge.net/macperl/perlport.html

    perlunicode
http://www.activestate.com/Products/ActivePerl/docs/lib/Pod/perlunicode.html

    RFC 58: http://tmtowtdi.perl.org/rfc/58.pod

    Larry Wall's response to RFC 58 on 8 Aug 2000
    http://www.mail-archive.com/perl6-language%40perl.org/msg01421.html
    http://www.mail-archive.com/perl6-language%40perl.org/msg01423.html

    Simon Cozens' work on line disciplines in 5.6 binmode
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2000-04/msg00807.html


Reply via email to