%data = ( "1111$;Cabin" => { 'Ad1' => '01 Charles St', 'City' => 'CA', 'name' => 'Claud Odur', 'state' => 'CA', 'zCode' => '2334' }, # ... # snip # ... "8888$;Test" => { 'Ad1' => '2AAAA', 'City' => 'BB', 'name' => 'BXBXBX', 'state' => 'HH', 'zCode' => 'WWWW' } ); # Now elements of the data can be accessed like this my $val = $data{'1111','Cabin'}->{'City'}; # Or, to get a slice of rows where status is 'Main', you could do this: my @main = @data{grep /$;Main$/, keys %data}