首页 > 解决方案 > perl 脚本是为哪个版本的 perl 编写的?

问题描述

我正在检查现有的 perl 脚本是否存在漏洞。大多数与 perl 相关的漏洞仅适用于某些版本。有没有办法确定使用哪个版本来编写 perl 脚本?(我不能问开发商。)谢谢!

标签: perl

解决方案


对于给定脚本所针对的最低 Perl 版本,可能会有一些迹象。例如:

  • 当声明明确的版本要求时,例如use v5.12.

  • 当使用显式特征时,例如use feature 'say'。参见perldoc featurePerl 版本和可用特性之间的关系。

  • 使用特定语法时。例如:

    • //defined-or 运算符可以很容易地注意到 5.10 后的代码。
    • pushpop使用标量参数表示 5.14 到 5.24。
    • 正则表达式语法也倾向于偶尔发生变化,例如5.14 或5.22中的/d,/u​​ , /a,修饰符。/l/n
       

    您必须阅读 perldelta 文档以获取相关更改列表。

Perl::MinimumVersion 模块可以帮助自动化其中的一些检查。

但是,这些功能的存在与否与给定程序的漏洞无关。反而:

  • 确保您使用最新的 Perl 解释器运行脚本。不要继续运行不受支持的旧版本。

    除了极少数的边缘情况,新的 Perl 版本非常向后兼容,应该可以正常工作。但请注意,升级 Perl 涉及重新安装所有模块(特别是必须重新编译任何 XS 模块)。

  • 确保您也在查看脚本的依赖项。它们也是最新的吗?新版本是否类似兼容将取决于特定模块。


推荐阅读