Perl Best Practices 的原始规则(对于您提到的第一个策略)是
不要使用裸字文件句柄
这不仅仅适用于open. Perl::Critic 很大程度上基于 PBP,但它确实有所不同(与 perldoc):
Perl::Critic 是一个可扩展框架,用于创建编码标准并将其应用于 Perl 源代码。本质上,它是一个静态源代码分析引擎。Perl::Critic 与许多 Perl::Critic::Policy 模块一起分发,这些模块试图强制执行各种编码准则。大多数策略模块都基于 Damian Conway 的《Perl 最佳实践》一书。然而,Perl::Critic 不仅限于 PBP,甚至会支持与 Conway 相矛盾的策略。
因此,Perl::Critic 没有对 opendir 执行相同的规则这一事实可能主要是一个疏忽。这也可以归咎于 PBP 中的示例仅使用open. 我建议在 CPAN 上提交一个错误(查看代码,这只是一行更改)。
第二条规则实际上并非来自 PBP,但在我看来它同样适用于 opendir。同样,向 CPAN 上的作者提交错误报告将是一个好主意,因为这也只是一行更改。如果这实际上是一个有意的决定,您可能会得到更具体的反馈。
更正:有点不同,但 PBP 中第二个策略最接近的规则是
尽快显式关闭文件句柄。
如果维护者认为有必要的话(并且不担心它会破坏太多现有代码),那么修复该策略将不仅仅是一个行,但仍然相对容易。