我有一个带有可能的命令行参数的字符串(使用Read-Eval-Print-Loop程序),我希望它在传递给Getopt::Long时与命令行参数类似地进行解析。
详述:
我有一根线
$str = '--infile /tmp/infile_location --outfile /tmp/outfile'我想让它被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
);有什么好的/更好的方法吗?
发布于 2008-09-23 00:15:42
查看man page for Getopt::Long中的parsing options from an arbitrary string部分,我认为它做的正是您想要的。
发布于 2008-09-23 00:23:37
哇!
我认为我可以同时使用bentilly和dinomite的答案,并执行以下操作:
在GetOpt::Long (请参见here) )方法的glob to
代码可能类似于...
GetOptionsFromArray ([glob ($input_line)]);这只有一行..很酷(我知道我必须做一些错误检查等) ..但这很酷..。
发布于 2008-09-23 07:22:56
当您在用户输入以外的其他内容上使用Getopt::Long时,请注意,根据POSIXLY_CORRECT环境变量的不同,某些功能会有所不同。您可以使用相应的Configure调用来覆盖此设置。
Obligatory POSIXLY_CORRECT anecdote。
https://stackoverflow.com/questions/118289
复制相似问题