in reply to Re: 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.use strict; use warnings; my $header_lines = $ARGV[0] // 0; my $footer_lines = $ARGV[1] // 0; my $whole_input; # slurp whole file into one scalar variable {local $/ ; $whole_input = <DATA>}; # (this can exceed memory if data is too much) # define what line is in regular expression language: # not newline x (zero or more times) + one newline after my $line_regex = qr/[^\n]*\n/; # treat whole input as string and substitute lines with empty strings: $whole_input =~ s/\A (?:$line_regex){$header_lines} //x; # delete some lines from the beginning $whole_input =~ s/ (?:$line_regex){$footer_lines} \z//x; # delete some lines from the ending print $whole_input; # now it is not whole, and you can parse __DATA__ Header 1 Header 2 Text 1 Text 2 Text 3 Text 4 Text 5 Footer 1 Footer 2 Footer 3
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: More efficient way to exclude footers
by AnomalousMonk (Archbishop) on Aug 19, 2015 at 17:51 UTC | |
by rsFalse (Chaplain) on Aug 19, 2015 at 18:09 UTC |