perl脚本是为哪个版本的perl编写的?

时间:2018-09-17 16:48:40

标签: perl

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

1 个答案:

答案 0 :(得分:5)

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

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

  • 使用显式功能时,例如use feature 'say'。有关Perl版本与可用功能之间的关系,请参见perldoc feature

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

    • 使用//定义或运算符可以轻松地通知5.10后的代码。
    • push或带有标量参数的pop表示从5.14到5.24。
    • 正则表达式的语法也偶尔会发生变化,例如5.14中的/d/u/a/l修饰符或5.22中的/n。 />

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

Perl :: MinimumVersion模块可以帮助自动执行某些检查。

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

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

    除极少数情况外,新的Perl版本向后兼容,并且可以正常使用。但是请注意,升级Perl涉及重新安装所有模块(特别是,任何XS模块 必须重新编译)。

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