gpt4 book ai didi

perl 脚本仅在使用 -d 开关运行时才会引发编译错误

转载 作者:行者123 更新时间:2023-12-04 20:08:23 25 4
gpt4 key购买 nike

我有一个 perl 脚本,当我尝试使用 -d 开关在 Debug模式下运行它时,它运行良好。
当我使用 -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 版)?

最佳答案

堆栈跟踪表明问题来自从调试器加载的 Term::ReadLine::Perl。所以没有调试 -> 没有加载调试器 -> 没有加载 Term::ReadLine::Perl -> 没有错误。

从查看 Term::ReadLine::Perl 来看,我猜问题出在它尝试加载 Term::ReadLine::readline 的行中,该行尝试使用 STDIN、STDOUT 等执行一些操作以将其用作终端。因为这实际上意味着,某些字节序列具有特殊含义(转义和控制代码,例如重置终端、切换线路模式、回显等),这可能会与您的 binmode STDOUT 设置有关。

关于perl 脚本仅在使用 -d 开关运行时才会引发编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22464597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com