use Data::Dumper; my %hash; open my $fh, '<', $logfile or die $!; while my $line ( <$fh> ) { if ( $line =~ /\[x\]/ .. $line =~ /\[y\]/ ) { my ($key,$value) = split /:/, $line; next unless $key && $value; $hash{$key} = $value; } } close $fh; print Dumper \%hash;