制作Perl脚本*使用标志运行*

时间:2015-07-02 17:08:01

标签: perl flags

我是Perl的新手,最近遇到了以下问题。 我的Perl代码必须全部驻留在一个文件中(它由另一个我无法控制的程序调用)。 我现在希望使用标志(例如,perl myscript.pl -T用于污染模式)来运行脚本,尽管最初在没有标志的情况下调用它。我该怎么做,即如何从Perl文件中“设置标志”?

我有一个想法是让文件再次启动(在没有标志的情况下调用之后),这次使用-T标志(通过发出诸如system($^X, "myscript.pl -T", @ARGS);之类的shell命令) 。那会有用吗?有更好的想法吗?

1 个答案:

答案 0 :(得分:5)

我认为你走在正确的轨道上。您可以使用$^{TAINT}变量,exec代替system

exec($^X, $0, '-T', @ARGV) if $^{TAINT} < 1;

这并不适用于所有情况。首先,您将丢失一些其他命令行开关,您的脚本最初可能会被调用:

perl -I/path/to/some/more/libs -w -MNecessary::Module myscript.pl ...

其中一些解决方法(use warnings或添加-w切换到上面的exec声明,分析@INC%INC以确定添加了-I-M个开关)但是您可以了解的更多关于脚本的确切调用方式,您就能越了解需要担心的解决方法。

根据这里的......群体动态,另一种方法是对呼叫程序进行一些间接控制。继续将-T放在shebang线上@Hunter McMillen和@ThisSuitIsBlackNot建议,等待错误报告,然后将问题诊断为“未使用-T开关调用程序”......