in reply to output issue....

You're reading your input file one line at a time, and only printing a line when your regex matches - while what you say you want to print is a paragraph ("\n\n"-delimited areas of your input.) There are ways to make the above work - i.e., you could set a "keep printing" flag as soon as your regex matches and reset it when you hit whatever your end condition is - but since your input is already split into paragraphs, it's much easier to use Perl's EOL variable, $/, to tell your script to read it that way.

#!/usr/bin/perl use strict; use warnings; my $pid = "10570"; my $str = 'cm_child\.c'; { local $/ = "\n\n"; while (<DATA>){ print if /^[DWEM]\s+.*?\s+(?:cm?|M):$pid\s+$str/sm; } } __END__ D Fri Nov 21 14:09:41 2008 TME_BILLING_COE cm:10570 cm_child.c(107) +:4385 1:blrdxp-santbs:CustomerCenter XXX CMAP: op_custom() past op_decode, opcode: PCM_OP_CUST D Fri Nov 21 14:09:41 2008 TME_BILLING_COE cm:10570 cm_child.c :92 +1:blrdxp-santbs:CustomerCenter:0:AWT-EventQueue-0:83:1227256900:0 op_cust_validate_customer input flist # number of field entries allocated 20, used 3 0 PIN_FLD_POID POID [0] 0.0.0.1 /plan -1 0 0 PIN_FLD_ACCOUNT_OBJ POID [0] 0.0.0.1 /account -1 0 0 PIN_FLD_PAYINFO ARRAY [1] allocated 20, used 5 1 PIN_FLD_NAME STR [0] "Invoice1" D Fri Nov 21 14:09:41 2008 TME_BILLING_COE cm:10570 fm_cust_pol_pre +p_payinfo.c:113 1:blrdxp-santbs:CustomerCenter:0:AWT-EventQueue-0:83: +1227256900:0 op_cust_pol_prep_payinfo input flist # number of field entries allocated 20, used 5 0 PIN_FLD_POID POID [0] 0.0.0.1 /payinfo/invoice -1 0 0 PIN_FLD_ACCOUNT_OBJ POID [0] 0.0.0.1 /account -1 0 0 PIN_FLD_FLAGS INT [0] 1

You also need to consider how you're going to deal with the metacharacters (such as '.') in the filename that you're using, since "cm_child.c" will happily match "cm_childXc" or "cm_child-c" when used as a part of the regex - but that's a different problem (one that can't be addressed since we don't know what the range of possible filenames is in your case.)


--
"Language shapes the way we think, and determines what we can think about."
-- B. L. Whorf