我想使用cygwin工具(屏幕)进行开发,并从cygwin环境调用ActiveState Perl调试器会引发以下错误。
bash-3.2$ perl -d test.pl
The system cannot find the path specified.
Unable to get Terminal Size. The Win32 GetConsoleScreenBufferInfo call didn't work. The COLUMNS and LINES environment variables didn't work. The resiz
e program didn't work. at F:/Perl/lib/Term/ReadKey.pm line 362.
Compilation failed in require at F:/Perl/lib/Term/ReadLine/Perl.pm line 64.
at F:/Perl/lib/Term/ReadLine/Perl.pm line 64
Term::ReadLine::Perl::new('Term::ReadLine', 'perldb', 'GLOB(0x18e2e0c)', 'GLOB(0x1883e14)') called at F:/Perl/lib/perl5db.pl line 6073
DB::setterm called at F:/Perl/lib/perl5db.pl line 2237
DB::DB called at testReliance1.pl line 2
Attempt to reload Term/ReadLine/readline.pm aborted.
Compilation failed in require at F:/Perl/lib/Term/ReadLine/Perl.pm line 64.
END failed--call queue aborted at testReliance1.pl line 64.
at testReliance1.pl line 64
bash-3.2$
我找不到任何解决方法。
尝试使用cygwin perl distrubution,但是在cpan下编译perl模块对我来说是噩梦,因为他们中的大多数都不会编译,也没有深入的知识来修复编译器错误。
为调试器提供虚假终端可能有效,但不知道可行性和如何进行 请建议是否有解决方法。
答案 0 :(得分:1)
来自"Environment" section of the Term::ReadLine documentation :
环境变量
PERL_RL
控制加载哪个ReadLine克隆。如果值为false,则使用虚拟接口。
作为解决方法直到解决不兼容问题,您可以使用
禁用Term :: ReadLinebash$ PERL_RL=0 perl -d test.pl
答案 1 :(得分:1)
请记住,Windows控制台为常规* nix控制台提供了一个非常不同的环境。通常,想要与控制台交互的Windows应用程序在Cygwin控制台(如MinTTY,XTerm,Screen)中不起作用,因为它们只提供PTY仿真。
MinTTY的作者Andy Koppe编写了a small program called conin来允许Windows程序从控制台读取,但仍然认为完全输出支持是不可行的。答案 2 :(得分:1)
在我看来,好像你有很多问题。 ActiveState Perl尝试将Perl移植到具有二进制分发和模块版本控制的Windows,这种方法正在消亡。 strawberry perl的成功以及我的个人经历让我觉得你只是在使用错误的产品。
我专门使用草莓,一方面我可以指望自从迁移以来遇到的问题。从ActiveState转换后我感到非常高兴。我建议你也试一试。 Strawberry带有一个mingw环境 - 它甚至可以为您编译XS模块,它可以让您获得纯粹的CPAN。
(这是一个完全失败的答案,但我很确定我在cygwin中使用过strawbery perl的bin并且它已经有效了)
基本上,你只需要将Cygwin Term::ReadKey
放在你的lib pecking顺序中更高的位置,以便它被使用。
或强>
从Cygwin运行它。
perl -MTerm::ReadKey -E"say Term::ReadKey::termsizeoptions()"
无论那个值是什么,从你的草莓安装中编辑Term / ReadKey.pm手工破解它,设置一个变量
my $termoption = value_you_got from above
&termsizeoptions()
$termoption
醇>
答案 3 :(得分:0)
在运行Perl之前尝试运行此命令:
export COLUMNS LINES
答案 4 :(得分:0)
使用与ActiveState perl一起打包的wperl.exe。这往往可以正常工作。