我有以下使用环境变量$X
的Perl代码:
printf("%s", substr($ENV{X}, 4));
在不更改Perl代码的情况下,我可以将$X
设置为什么,以便在printf
返回之前Perl以状态1退出?我认为${\(exit 1)}
可行,但显然我不了解Perl如何读取环境变量。
答案 0 :(得分:2)
你无能为力。只是在尝试获取数据时,将数据作为Perl代码执行?那会很糟糕。
${\(exit 1)}
是一个调用exit
的表达式。 $ENV{X}
是一个返回字符串的表达式(env var X
的值)。
您需要将$ENV{X}
的内容作为Perl代码传递给Perl解析器。将Perl代码传递给解析器可以使用以下内容从Perl中传递:
eval EXPR
(包括s///ee
)do PATH
require PATH
require Module
use Module
no Module
从perl
之外,您可以使用
perl PATH
perl <PATH
perl -e EXPR
perl -E EXPR
perl -MModule
perl -mModule
此外,命令行选项可以通过PERL5OPT
传递。