#! perl -slw use strict; use Data::Dump qw[ pp ]; $Data::Dump::WIDTH = 50; $/ = ''; ## para mode; see Perlvar my %hash; while( ) { my %subhash; for my $line ( split "\n" ) { my( $key, $value ) = split /\s+:\s+/, $line; $subhash{ $key } = $value; } $hash{ $subhash{ FullName } } = \%subhash; } pp \%hash; __DATA__ FullName : User1 Home Address : 111 address lane Phone : 555-555-5555 FullName : User2 Home Address : 222 address lane 2 Phone : 777-777-7777 #### c:\test>junk7 { User1 => { FullName => "User1", "Home Address" => "111 address lane", Phone => "555-555-5555", }, User2 => { FullName => "User2", "Home Address" => "222 address lane 2", Phone => "777-777-7777", }, }