use strict; use warnings; while () { if (m/ccParty<(.*?)> Port<(.*?)> DTMF<(.*?)>/) { print "Matched values $1 $2 $3\n"; print; } } __DATA__ 2011-12-21 00:24:20.422318%%0f-1f-15%%TRF%% Received event cc R D T SRC Addr<01-15-0c> 2011-12-21 00:24:20.422888%%0f-1f-16%%TRF%% Received event cc<0x0> R D T SRC Addr<01-15-15> 2011-12-21 00:24:20.423024%%0f-1f-16%%DB1%% ccParty<0x31A9A> Port<1-14-7-23> DTMF<4> 2011-12-21 00:24:20.423138%%0f-1f-16%%DB2%% ccParty<0x31A9A> next CF<21> 2011-12-21 00:24:20.423229%%0f-1f-16%%DB2%% ccParty<0x31A9A> CF<21> I<0>