#!/usr/bin/perl use strict; use warnings; my %names; my $nextID = 'AAAAAA'; while () { if (/( (?:[A-Z-]{2,} (?:(?=\s+[A-Z-]{2})\s+)?)+ )/x) { my $name = $1; $names{$name} = $nextID++ if ! exists $names{$name}; s/$name/$names{$name}/g; } print; } __DATA__ 7/21/2006 6:22:49 start new visit signin - Requirements Passed 7/21/2006 6:22:49 visitor data captured for JON DOE 7/21/2006 6:22:49 visit record saved for JON DOE 7/21/2006 6:22:49 starting to send print job for JON JOE DOE 7/21/2006 8:25:42 visitor data captured for JANE SMITH 7/21/2006 8:25:43 visit record saved for JANE SMITH 7/21/2006 8:25:43 starting to send print job for JANE-BOB SMITH 7/21/2006 8:25:51 finished with visit sign in for JANE-BOB SMITH #### 7/21/2006 6:22:49 start new visit signin - Requirements Passed 7/21/2006 6:22:49 visitor data captured for AAAAAA 7/21/2006 6:22:49 visit record saved for AAAAAA 7/21/2006 6:22:49 starting to send print job for AAAAAB 7/21/2006 8:25:42 visitor data captured for AAAAAC 7/21/2006 8:25:43 visit record saved for AAAAAC 7/21/2006 8:25:43 starting to send print job for AAAAAD 7/21/2006 8:25:51 finished with visit sign in for AAAAAD