Я использую Perl для очистки файлов и сталкиваюсь с некоторыми проблемами с производительностью. Одна из основных частей моего кода связана со стандартизацией полей имен. У меня есть несколько разделов, которые выглядят так:
sub substitute_titles
{
my ($inStr) = @_;
${$inStr} =~ s/ PHD./ PHD /;
${$inStr} =~ s/ P H D / PHD /;
${$inStr} =~ s/ PROF./ PROF /;
${$inStr} =~ s/ P R O F / PROF /;
${$inStr} =~ s/ DR./ DR /;
${$inStr} =~ s/ D.R./ DR /;
${$inStr} =~ s/ HON./ HON /;
${$inStr} =~ s/ H O N / HON /;
${$inStr} =~ s/ MR./ MR /;
${$inStr} =~ s/ MRS./ MRS /;
${$inStr} =~ s/ M R S / MRS /;
${$inStr} =~ s/ MS./ MS /;
${$inStr} =~ s/ MISS./ MISS /;
}
Я передаю по ссылке, чтобы попытаться набрать хотя бы небольшую скорость, но боюсь, что выполнение стольких (буквально сотен) конкретных строк заменяет десятки тысяч (вероятно, сотни тысяч) записей повредить производительность.
Есть ли лучший способ реализовать такую логику, чем то, что я делаю в настоящее время?
Спасибо
Редактировать: Быстрое примечание, не все функции замены просто удаляют точки и пробелы. Есть удаления строк, группы soundex и т. Д.