首页 > 解决方案 > 如何重写我的 ($one, $two) = @ARGV 并在程序运行时执行它?

问题描述

可能吗?我想重写构造:

#!/usr/bin/perl 

my ($one, $two) = @ARGV

用户输入两个参数。例如onetwo。程序正在运行。程序运行时如何使用 new $one, $two, (args) 执行程序?

标签: perl

解决方案


该变量@ARGV是一个普通数组,恰好填充了来自命令行的参数。它不是只读的,这些字符串也没有任何特殊意义。您可以随意使用它们。

这意味着您可以启动您的程序,检查 的元素@ARGV,并随心所欲地更改它们。所有的数组操作,例如shift, push, splice, 等等都有效。

如果您想要同一程序的另一个副本,您可以system使用$^X(Perl 的当前路径)使用您选择的新参数运行:

 system $^X, @new_args;

或者,要重新启动您当前所在的进程,您可以使用exec

 exec $^X, @new_args;

除此之外,您的问题在细节和动机上过于简单,无法提出更有意义的建议。


推荐阅读