use warnings; use strict; my %NX_NTF_vars; my $sec; while () { chomp; if (/^SECTION=(\w+)/) { $sec = $1; } if (/^NX_NTF_/) { my ($key, $value) = split("=", $_); $NX_NTF_vars{$sec}{$key} = $value; } } use Data::Dumper; $Data::Dumper::Sortkeys=1; print Dumper(\%NX_NTF_vars); __DATA__ ----- SECTION=cr NX_NTF_ID=400017 NX_NTF_PRODUCER_ID=cr NX_NTF_PERSISTENT_ID=cr:400017 NX_NTF_NEW_DELAY_LOG= ----- SECTION=cnt NX_NTF_ID=F9F342055699954C93DE36923835A182 UUID String NX_NTF_PRODUCER_ID=cnt NX_NTF_PERSISTENT_ID=cnt:F9F342055699954C93DE36923835A182 NX_NTF_LAST_MOD_DT=02/04/2013 13:52:27