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