2

我已经在位置 C:\strawberry\perl\lib 的 perl 中安装了 expect 模块。

作为先决条件,我首先在安装 perl 的相同位置安装了 IO-Tty 模块。

现在如果我在做

use Expect;

它正在抛出错误

Can't locate IO/Pty.pm in @INC (@INC contains: C:/strawberry/perl/site/lib C:/st
rawberry/perl/vendor/lib C:/strawberry/perl/lib .) at C:/strawberry/perl/lib/Exp
ect.pm line 22.
BEGIN failed--compilation aborted at C:/strawberry/perl/lib/Expect.pm line 22.
Compilation failed in require at croak.txt line 1.
BEGIN failed--compilation aborted at croak.txt line 1.

可能的原因是

  1. Perl 正在寻找从 Expect.pm 调用的 IO::Pty 和 IO::Tty 模块。但是当我安装了 IO::Tty 模块时,它有 2 pm 文件,名称为 Pty.pm 和 Tty.pm

    package Expect;
    
    use IO::Pty 0.97;       # We need make_slave_controlling_terminal()
    use IO::Tty;
    

但是 perl 正在寻找 IO::Tty 模块。

这是造成问题的原因吗。如果是,那么我该如何前进

4

2 回答 2

3

Expect 在 Windows 下不起作用。

至少这是我在查看 CPAN Resters 结果时的印象。此处的此表:http: //matrix.cpantesters.org/ ?dist= Expect;maxver=1 表明在 Windows 下从来没有通过 Expect。

此外,Expect 文档讨论了该模块不适用于 ActivePerl,并建议改用 cygwin: https ://metacpan.org/module/RGIERSIG/Expect-1.21/Expect.pod#Can-I-use-this-module- with-ActivePerl-on-Windows。我假设 Expect 也不适用于 StrawberryPerl。

于 2013-09-25T08:02:30.247 回答
1

您是否使用 cpan 安装了这些模块?- 我强烈建议仅通过 cpan 安装模块,这样您将获得所需的所有依赖项。

如果您这样做了,请尝试重新安装它并注意任何错误。

我通过 cpan 测试了安装,它需要编译 IO::Tty 包,所以也许你需要为你想安装的任何 perl 模块设置一个构建环境。

如果您只是复制了一些预编译文件,请确认您丢失的文件确实存在并再次下载该包。

编辑:我错过了什么 - 您的 Pty.pm 和 Tty.pm 的完整路径应该类似于“C:/strawberry/perl/lib/IO/Tty.pm”

于 2013-09-25T07:24:18.000 回答