如何将环境变量作为代码执行?

时间:2014-12-22 22:08:39

标签: perl environment-variables

我有以下使用环境变量$X的Perl代码:

printf("%s", substr($ENV{X}, 4));

在不更改Perl代码的情况下,我可以将$X设置为什么,以便在printf返回之前Perl以状态1退出?我认为${\(exit 1)}可行,但显然我不了解Perl如何读取环境变量。

1 个答案:

答案 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传递。