在使用智能匹配的代码行之后,我的代码中立即出现很多Global symbol <symbol> requires explicit package name
错误。在使用智能匹配之前,所有这些全局变量都已定义且代码已工作。
if (ref($aActivityErrorStrings) eq "ARRAY" && $sChompedOutput ~~ @$aActivityErrorStrings)
错误的第一行提示我我的智能匹配用法有问题。错误行是
Status message: Failed: syntax error at common.pm line 320, near "$sChompedOutput ~" Global symbol "$rOutput" requires explicit package name
我的Perl版本是5.12
有人可以告诉我智能匹配有什么问题吗?
我的错人。此代码的用户正在具有Perl版本5.8的设备上运行它。
感谢您的所有反馈。申请者很多。
最佳答案
错误在这里:
if (ref($aActivityErrorStrings) eq "ARRAY"
&& $sChompedOutput ~~ @$aActivityErrorStrings))
^
|
您还有一个额外的结束括号。这证明您的代码可以正常工作:
use strict;
use warnings;
use 5.020;
my $aActivityErrorStrings = [
"Error1",
"Error2",
];
my $sChompedOutput = "Error1";
if (ref($aActivityErrorStrings) eq "ARRAY"
&& $sChompedOutput ~~ @$aActivityErrorStrings) {
say 'yes'
}
say "@$aActivityErrorStrings";
--output:--
Smartmatch is experimental at 1.pl line 14.
yes
Error1 Error2