in reply to Re^2: More efficient way to exclude footers
in thread More efficient way to exclude footers

But if the last line of the file ends not with newline, second regex do not match and don't delete anything.

That can easily be fixed by changing the regex object definition
    my $line_regex = qr/[^\n]*\n/;
to
    my $line_regex = qr/[^\n]*\n?/;
(note final  \n has  ? quantifier added). (Tested.)

But you need to go one step further in the example: show extraction of each remaining line for further processing.

Update: And see also File::Slurp.


Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^4: More efficient way to exclude footers
by rsFalse (Chaplain) on Aug 19, 2015 at 18:09 UTC
    my $line_regex = qr/[^\n]*\n?/;
    Thanks :) . Hm. And if we have some nonsense input: N and M, with file having less than N + M lines, then this regex deletes all lines. But earlier regex (without question mark) fails to delete too much lines. In that case we can set lower limit to greedy quantifier (add "0,"):
    s/\A (?:$line_regex){0, $header_lines}   //x;

    >>But you need to go one step further in the example: show extraction of each remaining line for further processing.
    chomp $whole_input; parse( $_ ) for split /\n/, $whole_input;
    But now it takes time for split :/
    Upd.: these lines after split are without newlines. If that is important for parsing to have newlines, the first split parameter could be /^/m