我在这里使用 @ikegami 帖子AUTOLOAD中的示例。我的RF::Component::Multi模块最近的CPAN 测试人员报告指出:
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"
Run Code Online (Sandbox Code Playgroud)
代码如下,在 GitHub上。
use 5.xx?use vars '$AUTOLOAD'?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"
Run Code Online (Sandbox Code Playgroud)
您可以使用Perl::MinimumVersion来回答这样的问题。
$ perlver your-code.pl
--------------------------------------
| file | explicit | syntax | external |
| -------------------------------------- |
| minver | ~ | v5.13.2 | n/a |
| -------------------------------------- |
| Minimum explicit version : ~ |
| Minimum syntax version : v5.13.2 |
| Minimum version of perl : v5.13.2 |
--------------------------------------
Run Code Online (Sandbox Code Playgroud)
并且,欲了解更多详细信息,
$ perlver --blame your-code.pl
------------------------------------------------------------
File : minver
Line : 3
Char : 40
Rule : _regex
Version : 5.013002
------------------------------------------------------------
s/^.*:://sr
------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
s///r5.14 中添加。
my $method_name = our $AUTOLOAD =~ s/^.*:://sr;
Run Code Online (Sandbox Code Playgroud)
可以替换为
( my $method_name = our $AUTOLOAD ) =~ s/^.*:://s;
Run Code Online (Sandbox Code Playgroud)