Мне нужен совет по лучшим практикам Perl. Я написал скрипт со сложным регулярным выражением:
my $regex = qr/complicated/;
# ...
sub foo {
# ...
if (/$regex/)
# ...
}
где foo
— часто вызываемая функция, а $regex
вне этой функции не используется. Каков наилучший способ справиться с такими ситуациями? Я хочу, чтобы его интерпретировали только один раз, так как он длинный и сложный. Но кажется немного сомнительным иметь его в глобальном масштабе, поскольку он используется только в этом подразделе. Есть ли разумный способ объявить его статическим?
Аналогичная проблема возникает с другим, возможно, неоправданным глобальным. Он считывает текущую дату и время и соответствующим образом форматирует их. Это также используется много раз, и снова только в одной функции. Но в этом случае еще более важно, чтобы он не был повторно инициализирован, так как я хочу, чтобы все экземпляры даты и времени были одинаковыми из данного вызова сценария, даже если минуты переходят во время выполнения.
На данный момент у меня есть что-то вроде
my ($regex, $DT);
sub driver {
$regex = qr/complicated/;
$DT = dateTime();
# ...
}
# ...
driver();
, что хоть немного его выделяет. Но, возможно, есть лучшие способы.
Еще раз: я ищу правильный способ сделать это с точки зрения следования лучшим практикам и идиомам Perl. Производительность хорошая, но удобочитаемость и другие потребности имеют приоритет, если я не могу иметь все.