#!/usr/bin/perl -w use strict; my @records; my %record; my $recordinprogress = 0; while (<>) { if (/-------/) { if ($recordinprogress) { push @records, { %record }; %record = (); $recordinprogress = 1; } } elsif (/([^:]+): (.*)/) { $recordinprogress = 1; $record{$1} = $2; } } #### $VAR1 = [ { 'phone no' => '34738472 ', 'url' => 'www.google.com ', 'name' => 'Umesh ', 'address' => 'New Delhi ', 'room no' => '001 ' }, { 'phone no' => '', 'url' => 'www.yahoo.com ', 'name' => 'Raj ', 'address' => 'Sahadara ', 'room no' => '002 ' }, { 'phone no' => '84398419 ', 'url' => 'www.rediff.com ', 'name' => 'Hem ', 'address' => 'mumbai ', 'room no' => '003 ' }, { 'phone no' => '', 'url' => 'www.google.com ', 'name' => 'Mukesh ', 'address' => '', 'room no' => '004 ' }, { 'phone no' => '4814314783 ', 'name' => 'abcxyz ', 'address' => '', 'room no' => '' }, { 'phone no' => '', 'name' => 'Rakesh ', 'address' => 'jrieiqrjqq ', 'room no' => '' } ];