#!/usr/bin/perl use Data::Dumper; while() { chomp; my ($log_date, $log_time, $something, $ip_address, $keyed_data_string ) = split /\s+/, $_, 5; my %keyed_data_hash; while( $keyed_data_string =~ s/\s*(\w+)=\s*([^=]*)$/ $keyed_data_hash{$1} = $2; ''/xsge) { 1 } print Dumper($log_date, $log_time, $something, $ip_address, \%keyed_data_hash); } __DATA__ 2007-11-16 16:05:40 Local1.Alert 128.2.2.40 id=firewall time="2007-11-16 16:03:37" fw=WS2000-Store 02 pri=1 proto=6(tcp) src=128.2.2.200 dst=128.2.100.106 mid= 1013 mtp= 2 msg=TCP connection request received is invalid, dropping packet Src 23 Dst 4631 from EXT n/w agent=Firewall