in reply to Oft encountered regex problem

That pretty much does it:

#!/usr/bin/perl -lw use Data::Dumper; my %info; while(<DATA>){ $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' };
Addendum: Updated regex to get rid of space at beginning of data.