http://www.perlmonks.org?node_id=11122316


in reply to Question about regex.

Here is another approach. It keeps the blank lines after the text (if you need to separate records like they are in the testlines.txt file).

It reads the file to be parsed from the command line following the program invocation. ( perl regex.pl testlines.txt )

It also places the local statement and the code inside a block to limit the changes to $/ to the block. Although this is not necessary for this small program, in a larger program, this will restore $/ to \n after the block is finished for any code that could follow.

#!/usr/bin/perl use strict; use warnings; @ARGV == 1 or print "Usage: perl $0 testlines.txt\n" and exit; { local $/ = "\n\n"; print grep /\b(?:third|four)\b/i, <>; }

My command prompt:

C:\Old_Data\perlp>perl test3.pl testlines.txt This is line one. Line Two is this. Third line starts here. This is line four.