Perl-如何引用本地安装的模块?

Perl-如何引用本地安装的模块?,perl,local,perl-module,Perl,Local,Perl Module,我有一个模块术语:TermKey,它位于文件TermKey.pm中。我不想把它安装到我的perl中;我希望它在本地被引用,这样就可以将脚本移动到其他机器上,而不必在每次perl安装时乱动。我该怎么做?我在网上看到的这些建议都不管用。我总是得到某种形式的: Can't locate loadable object for module Term::TermKey in @INC (@INC contains: /home/fritz/multi.kodis/Term /etc/perl /us

我有一个模块术语:TermKey,它位于文件TermKey.pm中。我不想把它安装到我的perl中;我希望它在本地被引用,这样就可以将脚本移动到其他机器上,而不必在每次perl安装时乱动。我该怎么做?我在网上看到的这些建议都不管用。我总是得到某种形式的:

Can't locate loadable object for module Term::TermKey in @INC (@INC   contains: /home/fritz/multi.kodis/Term /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl .) at test.pl line 6.
Compilation failed in require at test.pl line 6.
BEGIN failed--compilation aborted at test.pl line 6.
来测试这个。我将TermKey.pm的副本放在以下所有文件中:

./TermKey.pm
./Term/TermKey.pm
./Term/Term/TermKey.pm
(作为测试)

但它对以下任何一种都不起作用:

use lib '';
use Term::TermKey;

use lib '.';
use Term::TermKey;

use lib './';
use Term::TermKey;

use lib './Term';
use Term::TermKey;

use lib './Term/';
use Term::TermKey;

use lib '/home/[user]/[project]'
use Term::TermKey;

use lib '/home/[user]/[project]/Term'
use Term::TermKey;

use FindBin;                 
use lib "$FindBin::RealBin"; 
use Term::TermKey;
怎么回事?这应该很容易,我缺少什么?

“找不到模块的可加载对象”并不意味着Perl找不到Term/TermKey.pm。这意味着它找不到Term/TermKey.so(或者平台上调用的任何共享库)

不是一个纯Perl模块。相反,它包含代码,这些代码需要编译成C,然后再编译成一个共享库。此外,该库链接到,也必须安装在您的系统上

这使得将模块从一个系统移动到另一个系统变得更加困难。为Perl5.18.2编译的XS模块不能与5.20.0一起使用;它必须重新编译。您可以升级次要版本(如从5.18.0升级到5.18.2),而无需重新编译,尽管不保证向另一个方向(从5.18.2升级到5.18.0)运行

因此,如果所有机器都在同一操作系统上运行同一版本的Perl,并且安装了相同的库,那么您可能能够实现这一点。最简单的方法(如果可行的话)是安装并执行以下操作:

cpanm --local-lib some-dir Term::TermKey
然后,您可以将
some dir
复制到另一台机器上(上面列出了注意事项)。没有必要在其他机器上安装local::lib;你可以

use lib 'some-dir/lib/perl5';

总括评论:请注意,
libtermkey
,也就是说,
Term::TermKey
处于进化的死胡同。不会再有任何发展了。相反,它被合并到
libtickit
。因此,如果您打算编写新程序,您可能需要查看
Tickit
?听起来,除了一次性使用之外,在任何情况下都很难尝试使用这样的库。我不介意期望用户安装一些东西,但在合理的范围内…关于您使用的平台等更多信息可能会帮助我们提出一些建议。目标平台?任何我正在Linux上进行测试,但我希望我可以制作一个perl程序,使用任何人都可以使用的击键。还有什么信息会有帮助?