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

perl – 是在一个CPAN模块中的eval,而不是本地化$@一个bug?

发布时间:2020-12-15 21:26:55 所属栏目:大数据 来源:网络整理
导读:我想我在 Params::Validate遇到了一个错误,但我不知道我是否正确地识别了有问题的代码片段.该代码无法通过链接传递异常(使用 Try::Tiny),所以我开始调试,发现try块中使用的类有一个析构函数.这个析构函数调用使用Params :: Validate并查找Validate.pm source
我想我在 Params::Validate遇到了一个错误,但我不知道我是否正确地识别了有问题的代码片段.该代码无法通过链接传递异常(使用 Try::Tiny),所以我开始调试,发现try块中使用的类有一个析构函数.这个析构函数调用使用Params :: Validate并查找Validate.pm source的对象方法,我看到一个没有$@本地化的eval,即全局$@被覆盖.

现在我看到两个选项:

> Params :: Validate应该总是本地化$@,因此它是一个应该报告的错误.
>该错误在有问题的类中,因为它不应该在析构函数中使用Params :: Validate. Params ::验证可以保持现在.

哪一个?我应该怎么处理这种情况?

PS:我认为CPAN模块应该是坚实的,既不破坏自己也不打破环境,所以问题标题.

解决方法

有关如何提交错误报告,请参阅 http://search.cpan.org/perldoc?Params::Validate#SUPPORT.你花了很多精力发现问题的原因和解决方案.如果别人不知道你已经学到了什么,不得不回溯你的步骤,这将是一个耻辱.

I think that CPAN modules should be rock-solid and neither break themselves nor their environment

在一个完美的世界里,软件总是会做它所声称的,而且没有任何无证的副作用. CPAN是一个非常开放的系统,所以几乎任何人都可以上传几乎任何东西.我认为这不仅仅是一个bug,而是入门的一个很低的障碍,使得Perl模块的开发变得更加容易,并鼓励开发一个更有用和更有用的库.

Params :: Validate于九年前发布,自那时起已经更新了大约94次.如果您查看CHANGES文件,您将看到作者已经非常认真地将模块保持最新,并且偶尔出现问题并添加新功能.听到用户发现问题可能不会让他们感到震惊,也不要太震惊,发现一些图书馆只是优秀而不完美.

(编辑:李大同)

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

    推荐文章
      热点阅读