我正在寻找有关 Perl 最佳实践的建议。我写了一个脚本,它有一个复杂的正则表达式:
my $regex = qr/complicated/;
# ...
sub foo {
# ...
if (/$regex/)
# ...
}
wherefoo
是一个经常被调用的函数,并且$regex
不在该函数之外使用。处理这种情况的最佳方法是什么?我只希望它被解释一次,因为它又长又复杂。但是将它放在全局范围内似乎有点问题,因为它只在那个子中使用。有没有一种合理的方式来声明它是静态的?
另一个可能不合理的全球也出现了类似的问题。它读入当前的日期和时间并对其进行适当的格式化。这也被多次使用,而且只在一个功能中使用。但在这种情况下,更重要的是不要重新初始化它,因为我希望日期时间的所有实例在给定的脚本调用中都是相同的,即使在执行期间分钟翻转。
目前我有类似的东西
my ($regex, $DT);
sub driver {
$regex = qr/complicated/;
$DT = dateTime();
# ...
}
# ...
driver();
这至少稍微隔离了它。但也许有更好的方法。
再说一遍:我正在寻找正确的方法来做到这一点,就遵循最佳实践和 Perl 习惯用法而言。性能很好,但如果我不能拥有一切,可读性和其他需求优先。