sub Msg { my $line = shift; my ($pf,$fixFields) = split(/received:|Sent:/, $line); my %fixMsg; %fixMsg = split(/[,=]/, $fixFields); @fixMsg{('_time_', '_mi_', '_fixsession_')} = (split(/\|/, $pf))[2,3,5]; return \%fixMsg; } open file,"abc.txt" while() { $msg=pfUtils::Msg($_); foreach my $key (%{$msg}) { if (!($key eq _mi_|$key eq _fixsession_|$key eq _time_|$msg->{$key} eq '')) { printf "\n\t%20s (%3d) = %s ", $code,$key,$value; } } } close file; #### ^|server |13:20:52.423762|pht0211j-hello|DebugLow|NAQ|PXXXX thread started. Thread ID=-1349444688.|<> ^|Server |13:20:52.425505|pht0211j-hello|DebugLow|Sian01|Sian01 Sent: 8=FIX.4.2,9=65,35=A,34=1,49=FBCO20,56=CMS,52=20080111-18:20:52,43=N,98=0,108=60,10=133|<> ^|Server |13:20:52.425602|pht0211j-hello|InfoGeneral|Sian01|SiacConn001 Logon : 8=FIX.4.2,9=65,35=A,34=1,49=FBCO20,56=CMS,52=20080111-18:20:52, 43=N,98=0,108=60,10=133|<> ^|server |13:20:52.647996|pht0211j-hello|InfoGeneral|abc|Starting ABC link: Abxxx|<>