DB<98> say "$_:\t", $_ =~ s/(\w\w).*\@.*(\.\w*)/$1...\@...$2/r for qw/someone@example.co.uk andrew.test@some.company.co.uk jo@abc.com/ someone@example.co.uk: so...@....uk andrew.test@some.company.co.uk: an...@....uk jo@abc.com: jo...@....com #### if( $em =~ /^(\w[\w|\.]).*@(\w\w).*\.(\w+)$/ ) { $em = $1 . '.' x (length($name) - 2) . "\@$2" . '.' x (length($comp) - length($3) - 2) . $3; }