#!/usr/bin/perl -lw use Data::Dumper; my %info; while(){ $info{$1}=$2 if /(\w+)[ :](?:is|at)? (.*)/; } print Dumper(\%info); __DATA__ name is Doug eyes: brown email at bill@hotmail.com ##### Output with each dataset: #Fred Flintstone $VAR1 = { 'email' => 'fflinstone@hotmail.com', 'name' => 'Fred', 'eyes' => 'black', 'era' => 'prehistoric' }; #Doug $VAR1 = { 'email' => 'bill@hotmail.com', 'name' => 'Doug', 'eyes' => 'brown' };