我用的是@ikegami的文章中的一个AUTOLOAD
例子。我的RF::Component::Multi模块最近的一个CPAN testers report说:
Bareword found where operator expected at .../RF/Component/Multi.pm line 102, near "s/^.*:://sr"
syntax error at .../RF/Component/Multi.pm line 102, near "s/^.*:://sr"
代码如下所示,在GitHub上。
- Perl 5.10不喜欢什么?
- 这里是否隐藏了一个需要〉5.10的Perl特性,而我没有看到?(我的Perl 5.26.3正在工作)
- 如果是这样的话,它能变得更向后兼容吗?怎么做?
- 如果没有,我在哪里可以找到版本,这样我就可以做正确的
use 5.xx
? - 我需要
use vars '$AUTOLOAD'
吗?
# Thanks @ikegami:
# https://stackoverflow.com/a/74229589/14055985
sub AUTOLOAD
{
my $method_name = our $AUTOLOAD =~ s/^.*:://sr;
my $method = sub {
my $self = shift;
return [ map { $_->$method_name(@_) } @$self ];
};
{
no strict 'refs';
*$method_name = $method;
}
goto &$method;
}
2条答案
按热度按时间ni65a41a1#
您可以使用Perl::MinimumVersion来回答这样的问题。
有关更多详细信息,
svgewumm2#
在5.14中添加了
s///r
。可替换为