$re{"$first$last"}||="(?{$acct})$first\\s*$last|(?{$acct})$last,?\\s+$first";
$first=substr($origfirst,0,1);
$re2{"$first$last"}||="(?{$acct})\\b$last,?\\s+$first"
unless exists $hExclude->{lc $origlast} or length($last)<4;
####
push @re, "$first\\s*$last(?{$acct})",
"$last,?\\s+$first(?{$acct})"
if !$re{"$first$last"}++;
$first=substr($origfirst,0,1);
push @re2, "\\b$last,?\\s+$first(?{$acct})"
if !exists($hExclude->{lc $origlast})
&& length($last)>=4;
&& !$re2{"$first$last"}++
####
$re=join('|',sort ocr_sort values %re);
$re2=join('|',sort ocr_sort values %re2);
####
# 5.10.0 and higher
$re = join('|', sort ocr_sort @re);
$re2 = join('|', sort ocr_sort @re2);
####
# Any version of Perl
$re = do {
my $ra = Regexp::Assemble->new();
$ra->add($_) for sort ocr_sort @re;
$ra->re
};
$re2 = {
my $ra = Regexp::Assemble->new();
$ra->add($_) for sort ocr_sort @re2;
$ra->re
};