NAME
File::MultilineGrep - Match multiple line block delimited by start/stop pattern
SYNOPSIS
use File::MultilineGrep;
file_multiline_grep ($begin_pattern
, $finish_pattern
, $middle_pattern
, $numeration
, $input_file
, $output_separator);
DESCRIPTION
To be considered text files having repeated structures. These structures possess repeated start delimiter, optional stop delimiter and variable contents. That is some or all fields of these structures are optional. A task is to select all whole structures, that contain a specified pattern. This can be done using a multiline regular expressions. But there is a performance issue: Processing time using regular expression is not directly proportional to amount of structures, so that increasing of this amount might cause the reqular expression will never finish. Processing time of the proposed function is directly proportional to amount of structures.
SUBROUTINES
file_multiline_grep
file_multiline_grep( $begin_pattern # regular expression
, $finish_pattern # optional parameter, regular expression
, $middle_pattern # regular expression
, $numeration # if false - not enumerate output lines
, $input_file # optional parameter
# if false - read from STDIN
, $output_separator); # optional parameter
EXAMPLE
use File::MultilineGrep;
file_multiline_grep ('person_id'
, 'end_person'
, 'Giant'
, 'enumerate_lines'
, 'most_famous_people'
, '------
reads all records from a file 'most_famous_people' (where line enumeration doesn't belong to the file):
1 person_id - 001
2 profession - Prophet
3 first name - Moses
4 birthyear - 1391 BCE
5 end_person
6 ...
7 person_id - 002
8 profession - Giant
9 first name - Samson
10 birthyear - Unknown
11 end_person
12 ...
13 person_id - 003
14 profession - King
15 first name - David
16 birthyear - 1040 BCE
17 end_person
18 ...
19 person_id - 004
20 profession - Giant
21 first name - Goliath
22 birthyear - 135 BCE
23 end_person
that begin with 'person_id', finish with 'end_person' and contain a pattern 'Giant':
7: person_id - 002
8= profession - Giant
9: first name - Samson
10: birthyear - Unknown
11: end_person
------
19: person_id - 004
20= profession - Giant
21: first name - Goliath
22: birthyear - 135 BCE
23: end_person
------
AUTHOR
Mart E. Rivilis, rivilism@cpan.org
BUGS
Please report any bugs or feature requests to bug-file-multilinegrep at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-MultilineGrep. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc File::MultilineGrep
You can also look for information at:
RT: CPAN's request tracker (report bugs here) http://rt.cpan.org/NoAuth/Bugs.html?Dist=File-MultilineGrep
AnnoCPAN: Annotated CPAN documentation http://annocpan.org/dist/File-MultilineGrep
CPAN Ratings http://cpanratings.perl.org/d/File-MultilineGrep
Search CPAN http://search.cpan.org/dist/File-MultilineGrep/
LICENSE AND COPYRIGHT
Copyright 2013 Mart E. Rivilis.
This program is free software; you can redistribute it and/or modify it under the terms of the the Artistic License (2.0).