Perl 5.8
Улучшения для довольно простых подстановок строк в существующем скрипте Perl.
Цель кода ясна, и код работает.
Для заданногоstring, замените каждое вхождение символа TAB, LF или CR одним пробелом и замените каждое вхождение двойной кавычки двумя двойными кавычками.Вот фрагмент из существующего кода:
# replace all tab, newline and return characters with single space
$val01 =~s/[\t\n\r]/ /g;
$val02 =~s/[\t\n\r]/ /g;
$val03 =~s/[\t\n\r]/ /g;
# escape all double quote characters by replacing with two double quotes
$val01 =~s/"/""/g;
$val02 =~s/"/""/g;
$val03 =~s/"/""/g;
Вопрос: Есть ли лучший способ выполнить эти манипуляции со строками?
By "лучший способ ", я имею в виду выполнять их более эффективно, избегая использования регулярных выражений (возможно, используя tr///
для замены символов табуляции, новой строки и lf) или, возможно, используя (qr//
), чтобы избежать перекомпиляции.
ПРИМЕЧАНИЕ. Я рассмотрел возможность перемещения операций манипуляции со строками в подпрограмму, чтобы уменьшить количество повторений регулярных выражений.
ПРИМЕЧАНИЕ. Этот код работает, он на самом деле не нарушен.Я просто хочу знать, существует ли более подходящее соглашение о кодировании.
ПРИМЕЧАНИЕ. Эти операции выполняются в цикле с большим числом (> 10000) итераций.
ПРИМЕЧАНИЕ. Этот скриптв настоящее время выполняется под Perl v5.8.8.(Сценарий имеет require 5.6.0
, но его можно изменить на require 5.8.8
. (Установка более поздней версии Perl в настоящее время недоступна на производственном сервере.)
> perl -v
This is perl, v5.8.8 built for sun4-solaris-thread-multi
(with 33 registered patches, see perl -V for more detail)