【发布时间】:2014-12-22 22:08:38
【问题描述】:
我有以下使用环境变量 $X 的 Perl 代码:
printf("%s", substr($ENV{X}, 4));
在不更改 Perl 代码的情况下,我可以将 $X 设置为什么,以便 Perl 在 printf 返回之前以状态 1 退出?我认为${\(exit 1)} 会起作用,但显然我不明白 Perl 如何读取环境变量。
【问题讨论】:
-
在字符串中执行代码的唯一方法是使用
eval()。 -
字符串插值仅在编译源代码时发生。 (
eval算作编译源)。已经编码的字符串不需要插值。幸运的是,Perl 不易受到您正在寻找的类似“Shellshock”的漏洞的影响。 -
@tjd:不,字符串插值发生在运行时。
标签: perl environment-variables