perl - 如何重写我的 ($one, $two) = @ARGV 并在程序运行时执行它?
问题描述
可能吗?我想重写构造:
#!/usr/bin/perl
my ($one, $two) = @ARGV
用户输入两个参数。例如one
,two
。程序正在运行。程序运行时如何使用 new $one, $two, (args) 执行程序?
解决方案
该变量@ARGV
是一个普通数组,恰好填充了来自命令行的参数。它不是只读的,这些字符串也没有任何特殊意义。您可以随意使用它们。
这意味着您可以启动您的程序,检查 的元素@ARGV
,并随心所欲地更改它们。所有的数组操作,例如shift
, push
, splice
, 等等都有效。
如果您想要同一程序的另一个副本,您可以system
使用$^X
(Perl 的当前路径)使用您选择的新参数运行:
system $^X, @new_args;
或者,要重新启动您当前所在的进程,您可以使用exec
:
exec $^X, @new_args;
除此之外,您的问题在细节和动机上过于简单,无法提出更有意义的建议。
推荐阅读
- javascript - pupeteer 调试:查找哪一行导致错误
- java - 用于在 Java 中将 .txt 文件转换为 .csv 的解析器
- mysql - 在 MariaDB 中使用许多 UPDATE 监视 SQL 脚本的进度
- ruby-on-rails - 捆绑安装时的 Ruby Gem LoadError
- google-play - Play Store:如果应用程序是免费的但服务 api 是付费的,我们是否需要向 Google 付费
- cors - 使用 jamesdbloom/MockServer 将 PATCH 添加到 CORS 的问题
- autohotkey - 如何在特定条件下扩展字符串?
- android - 试图编辑 SQLiteDatabase 中的特定行,但它会更新数据库中的每个项目
- javascript - 在 d3 图表上为每个节点级别添加事件侦听器
- c - C - 未知类型名称 PRAWINPUTDEVICELIST,即使包含 Windows.h