Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了只有在使用-d开关运行时,perl脚本才会抛出编译错误大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个perl脚本,当我尝试使用-d开关在调试模式下运行时,运行正常.
当我使用-d开关时,我得到一个编译错误,如:
Loading DB routInes from perl5db.pl version 1.33
Editor support available.

Enter h or `h h' for Help,or `perldoc perldebug' for more Help.

main::(..\..\bin\testnbestrover1.pl:23):
23:     binmode STDOUT,":utf8";
Access is denied.
Unknown error
Compilation failed in require at //fbl/NAS/PUB/RapTools/Perl64/lib/Term/ReadLine
/Perl.pm line 65.
 at //fbl/NAS/PUB/RapTools/Perl64/lib/Term/ReadLine/Perl.pm line 65
        Term::readLine::Perl::new('Term::readLine','perldb','GLOB(0x382418)','GLOB(0x322c30)') called at //fbl/NAS/PUB/RapTools/Perl64/lib/perl5db.pl line 60
68
        DB::setterm called at //fbl/NAS/PUB/RapTools/Perl64/lib/perl5db.pl line
2241
        DB::DB called at ..\..\bin\testnbestrover1.pl line 23
Attempt to reload Term/ReadLine/readline.pm aborted.
Compilation failed in require at //fbl/NAS/PUB/RapTools/Perl64/lib/Term/ReadLine
/Perl.pm line 65.
END failed--call queue aborted at ..\..\bin\testnbestrover1.pl line 65.
 at ..\..\bin\testnbestrover1.pl line 65

当我在没有-d开关的情况下运行脚本时,不会发生这种情况.关于这里可能出错的任何想法?

谢谢!

编辑:
如果我注释掉binmode STDOUT,“:utf8”,则会发生Term / ReadLine / Perl.pm第65行中的相同错误.声明.
在网上搜索此特定错误后,我发现其他人在使用“>”将其STDOUT重定向到文件时遇到了同样的错误操作符.事实证明,我的perl命令做了同样的事情,当我删除它时,调试器工作正常.
似乎是特定perl调试器的问题(即per5db.pl版本1.33)?

解决方法@H_675_16@
stacktrace表明问题来自从调试器加载的Term :: ReadLine :: Perl.所以没有调试 – >没有加载调试器 – >没有加载Term :: ReadLine :: Perl – >没有错误.

从查看Term :: ReadLine :: Perl我想这个问题就在它试图加载Term :: ReadLine :: readline的行中,它试图用STDIN,STDOUT等来做一些东西,把它用作终端.因为这实际上意味着,某些字节序列具有特殊含义(转义和控制代码,如重置终端,开关线模式,回声等),这可能会与您的binmode STDOUT设置有关.

大佬总结

以上是大佬教程为你收集整理的只有在使用-d开关运行时,perl脚本才会抛出编译错误全部内容,希望文章能够帮你解决只有在使用-d开关运行时,perl脚本才会抛出编译错误所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。