如何定位 perl 模块

Posted

技术标签:

【中文标题】如何定位 perl 模块【英文标题】:How to locate perl module 【发布时间】:2015-12-17 04:38:28 【问题描述】:

我在 windows7 pro 上使用 perl5.8.8 for msys。

我使用这个 perl 作为 CGI 和 Apache2.2 for windows。

我采取以下错误按摩..

Can't locate encoding.pm in @INC (@INC contains: 
   /usr/lib/perl5/5.8/msys
   /usr/lib/perl5/5.8
   /usr/lib/perl5/site_perl/5.8/msys
   /usr/lib/perl5/site_perl/5.8
   /usr/lib/perl5/site_perl/5.8
   /usr/lib/perl5/vendor_perl/5.8/msys
   /usr/lib/perl5/vendor_perl/5.8
   /usr/lib/perl5/vendor_perl/5.8
   .)

[为便于阅读添加了换行符。]

这是我的代码

#!/opt/gnu/bin/perl
print "Content-type: text/plain; charset=iso-8859-1\n\n";
use encoding qw(utf8);

encoding.pm 在C:\usr\lib\perl5\5.8\msys\Encode 中,如果我在 DOS 提示符下键入,则没有任何错误消息。

C:\usr\bin>perl -e 'use encoding qw(utf-8)
C:\usr\bin>

其实\usr下的lib是\mingw\msys\1.0.\lib的符号链接

如何找到 encoding.pm?

【问题讨论】:

【参考方案1】:

encoding.pm 位于 C:\usr\lib\perl5\5.8\msys\Encode

该目录中的文件名为Encoding.pm(不是encoding.pm),它是Encode::Encoding 模块,而不是encoding 模块。

所以听起来您的系统上不存在该模块。这很奇怪,因为它与 Perl 5.8 一起出现,但话又说回来,您使用的是 Perl 古老版本的古老端口。从好的方面来说,encoding 模块是双活的,因此无需重新安装所有 Perl 即可安装它。在msys上具体怎么做,我帮不了你。

它不在你的系统上并不是一件坏事,因为你真的不应该使用那个模块;它的设计存在根本缺陷。但是,在不知道你想通过使用它来实现什么的情况下,我无法告诉你应该使用什么。

【讨论】:

我将文章encodinging修改为encoding 新问题的调整答案 这不影响我的回答,除了补充一句:你为​​什么要迁移到这么古老的系统?????? 你是认真地问过使用有问题的东西有什么问题吗? 您应该知道,如果您今天移植软件,将其移植到早已停止维护的a version released in 2006 是一个坏主意。这有点像决定将您的办公室搬迁到废弃的办公楼。

以上是关于如何定位 perl 模块的主要内容,如果未能解决你的问题,请参考以下文章

Perl - 如何查看Perl模块路径

如何使用多个版本的 Perl 在 Perl 模块中安装脚本?

如何找到我的 Perl 脚本的模块依赖项?

Perl - 如何使用在另一个 Perl 脚本的模块中创建的进程句柄

如何查看特定 Perl 模块所需的所有模块?

Perl 程序如何知道在哪里可以找到包含它使用的 Perl 模块的文件?