在没有本地化$ @一个bug的情况下,在CPAN模块中进行"eval"吗?

Nik*_*nko 12 perl eval exception

我想我在Params :: Validate中遇到过一个错误,但我不确定我是否正确识别出有问题的代码.有问题的代码无法通过链传递异常(使用Try :: Tiny),所以我开始调试并发现try块内使用的类有一个析构函数.这个析构函数调用使用Params::Validate和查看Validate.pm 源代码的对象方法,我看到eval没有$@本地化,即全局$@被覆盖.

现在我看到两个选项:

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

哪一个?我该如何处理这种情况?

PS:我认为CPAN模块应该坚如磐石,既不会破坏自己也不会破坏环境,因此问题标题.

mob*_*mob 11

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

我认为CPAN模块应该坚如磐石,既不会破坏自己,也不会破坏环境

在一个完美的世界中,软件将始终按照其声称的方式执行,并且没有任何无证的副作用.CPAN是一个非常开放的系统,几乎任何人都可以上传几乎任何东西.我认为这更像是一个功能,而不是一个错误 - 进入门槛低,这使得开发Perl模块变得更容易,并且鼓励开发更广泛且更有用的库.

Params::Validate九年前发布,自那时以来已经更新了大约94次.如果你查看CHANGES文件,你会发现作者一直非常认真地保持模块的最新状态并修复偶尔出现的问题以及添加新功能.听到用户发现问题可能不会让他们感到震惊,也不会因为发现某些库只是优秀且不完美而感到震惊.