Perl Win32 ::控制台错误
问题描述:
我在Windows上的小Perl脚本试图调用其他人编写的依赖库C:/strawberry/perl/vendor/lib/Term/ReadPassword/Win32.pm
。Perl Win32 ::控制台错误
这里是C:/strawberry/perl/vendor/lib/Term/ReadPassword/Win32.pm
部分:
package Term::ReadPassword::Win32;
use strict;
if (IsWin32()) {
eval('use Win32');
eval('use Win32::Console');
eval('use Win32API::File');
} else {
eval('use Term::ReadPassword');
}
...
my $CONIN = new Win32::Console(Win32::Console::STD_INPUT_HANDLE());
my $CONOUT = new Win32::Console(Win32::Console::STD_ERROR_HANDLE());
...
以下错误运行我的脚本时出现了:
Undefined subroutine &Win32::Console::STD_INPUT_HANDLE called at C:/strawberry/perl/vendor/lib/Term/ReadPassword/Win32.pm line 58, <STDIN> line 2.
使用括号是合法的,因为讨论How can I optionally use Win32::Console and its constants in a cross platform way?和我抬头http://metacpan.org/pod/Win32::Console 。
谢谢。
答
eval('use Win32::Console');
不做任何错误检查。如果Win32 :: Console因任何原因无法加载,代码将继续进行,直到它实际调用应该加载的子例程之一,但不是。在这一点上,你会得到像你所描述的失败。
如果您将use Win32::Console;
添加到脚本中,会发生什么情况? (我猜你会得到某种错误,说Win32 :: Console无法加载。)
除了cjm的回答下面,请务必'使用警告;'。 – 2012-02-05 23:13:44
那么是什么问题阻止了Win32 :: Console的加载,以及你是如何解决它的? – cjm 2012-02-06 06:40:44
@cjm谢谢你的回答。它看起来像我安装在我的PC上的草莓Perl没有正确安装Win32 :: Console。使用ppm重新安装它。 – Zeiga 2012-02-06 19:27:33