期望模块不在perl中工作

时间:2013-09-25 06:59:59

标签: perl

我在位置C:\ strawberry \ perl \ lib。

的perl中安装了expect模块

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

现在,如果我正在做

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;
    
  2. 但是perl正在寻找IO :: Tty模块。

    这是否会导致问题。如果是,那么我该如何前进

2 个答案:

答案 0 :(得分:3)

Expect在Windows下不起作用。

在查看CPAN Resters结果时,至少这是我的印象。这张表在这里: http://matrix.cpantesters.org/?dist=Expect;maxver=1 表明在Windows下从未有过PASS for 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。

答案 1 :(得分:1)

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

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

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

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

编辑: 我错过了 - 你的Pty.pm和Tty.pm的完整路径应该是“C:/strawberry/perl/lib/IO/Tty.pm”