我有一个带有可能的命令行参数的字符串(使用Read-Eval-Print-Loop程序),我希望它在传递给Getopt :: Long时被解析为类似于命令行参数.
详细说明:
我有一个字符串
$str = '--infile /tmp/infile_location --outfile /tmp/outfile'
Run Code Online (Sandbox Code Playgroud)
我希望它被GetOptions解析,以便我更容易添加新选项.
我能想到的一个解决方法是将字符串拆分为空格,并用新数组替换@ARGV,然后调用GetOptions.就像是 ...
my @arg_arr = split (/\s/, $input_line);
# This is done so that GetOptions reads these new arguments
@ARGV = @arg_arr;
print "ARGV is : @ARGV\n";
GetOptions (
'infile=s' => \$infile,
'outfile=s' => \$outfile
);
Run Code Online (Sandbox Code Playgroud)
有没有好/更好的方法?
而不是在空格上拆分,使用内置的glob函数.除了在空格上拆分外,还将执行标准命令行扩展,然后返回一个列表.(例如*会给出一个文件列表等).我还建议在一般原则上本地化@ARG.
除此之外,这是您可以在不重写GetOptions的情况下完成此任务的唯一方法. (显然我需要更仔细地阅读文档.)
哇!!!
我想我可以使用bentilly和dinomite的答案并执行以下操作:
代码看起来像......
GetOptionsFromArray ([glob ($input_line)]);
Run Code Online (Sandbox Code Playgroud)
那只是一行..酷(我知道我必须做一些错误检查等)..但它的酷...
| 归档时间: |
|
| 查看次数: |
5160 次 |
| 最近记录: |