use strict; use warnings; use Data::Dumper; $/ = 'rn:'; my %hash; my $entry = 1; while () { chomp; /\S/ and $hash{ $entry++ } = () = /id-info:/g; } print Dumper \%hash; __DATA__ rn: uid:, id-info: | | creation-time: 1366069064 rn: uid:, id-info: | | id-info: | | id-info: | | creation-time: 1366069064 rn: uid:, id-info: | | id-info: | | deletion-time: 1367949064 creation-time: 1366069064 rn: uid:, creation-time: 1366069064