我正在尝试编译此脚本,但我收到此消息:
无法在 @INC 中找到 Email/Address.pm(@INC 包含:C:/strawberry/perl/lib C:/strawberry/perl/site/lib C:\strawberry\perl\vendor\lib。)在 C: /strawberry/perl/lib/Regexp/Common/Email/Address.pm 第 9 行。BEGIN failed - 编译在 C:/strawberry/perl/lib/Regexp/Common/Email/Address.pm 第 9 行中止。编译失败在 (eval 1) 第 1 行需要。BEGIN 失败--编译在 C:\examples\script2.pl 第 4 行中止。
我不明白,因为我真的有这个根
C:/strawberry/perl/lib/Regexp/Common/Email/Address.pm
当我尝试编译我的脚本时,有人知道为什么我会收到此错误消息吗?
太感谢了
我试着用这句话:
使用 lib 'C:/strawberry/perl/lib/Regexp/Common/Email';
并将这两个句子作为评论:
use Regexp::Common qw[Email::Address];
use Email::Address
然后我得到这个错误
Global symbol "%RE" requires explicit package name at C:\examples\script2.pl lin
e 10.Execution of C:\examples\script2.pl aborted due to compilation errors.
我看过perldiag
全局符号“%s”需要显式包名 (F) 你说过“use strict”或“use strict vars”,这表明所有变量必须是词法范围的(使用“my”或“state”),声明事先使用“我们的”,或明确限定全局变量在哪个包中(使用“::”)。
但我发现这对我来说有点理论化,因为我知道你必须在代码的乞求处使用句子'use'来使用包。
顺便说一句,这是我的代码:
use Regexp::Common qw[Email::Address];
use Email::Address;
while (<>) {
my (@found) = /($RE{Email}{Address})/g;
my (@addrs) = map $_->address, Email::Address->parse("@found");
print "X-Addresses: ", join(", ", @addrs), "\n";
}
我从我之前问过的一个问题中得到了这个代码。