The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Text::Continuation::Parser - Parse files with continuation lines

VERSION

version 0.6

SYNOPSIS

    package Foo;
    use Text::Continuation::Parser qw(parse_line);

    my $fh = io('?');
    $fh->print('line 1\\', $/);
    $fh->print('and 2', $/);
    $fh->print('line 3\\', $/);
    $fh->print('\\', $/);
    $fh->print('4 and 5', $/);
    $fh->seek(0,0);

    while(my $line = parse_line($fh)) {
        print $line;
        # This prints:
        # line 1 and 2
        # line 3 4 and 5
    }

DESCRIPTION

Parse files with continuation lines like shell scripts, Dockerfiles, and so forth.

METHODS

parse_line

This function work on any object that implements getline.

It will return all lines, except when lines are continued when a comment in somewhere in between:

    RUN apt-get update \
        && apt-get install -y perl \
        # This line isn't returned after parsing.
        && echo "this line is"

Lines like these will make sure the function dies:

    RUN apt-get update \
        && apt-get install -y perl \

    RUN echo "We will never get here"

While it may be possible in a shell, this is probably not what you intended and therefore parse_line dies.

CAVEATS

On older Perl versions, like 5.10 you must do the following:

    use FileHandle;
    # or..
    use IO::File;

    open my $fh, '<', 'myfile';
    parse_line($fh);

AUTHOR

Wesley Schwengle <waterkip@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2017 by Wesley Schwengle.

This is free software, licensed under:

  The (three-clause) BSD License