加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

只有在使用-d开关运行时,perl脚本才会抛出编译错误

发布时间:2020-12-15 21:45:47 所属栏目:大数据 来源:网络整理
导读:我有一个perl脚本,当我尝试使用-d开关在调试模式下运行时,运行正常. 当我使用-d开关时,我得到一个编译错误,如: Loading DB routines from perl5db.pl version 1.33Editor support available.Enter h or `h h' for help,or `perldoc perldebug' for more hel
我有一个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::(....bintestnbestrover1.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 ....bintestnbestrover1.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 ....bintestnbestrover1.pl line 65.
 at ....bintestnbestrover1.pl line 65

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

谢谢!

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读