RFC 69 (v3) Standardize input record separator (for

[email protected] (Perl6 RFC Librarian)
Newsgroups perl.perl6.language.io,perl.perl6.announce
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.