当前位置:  开发笔记 > 编程语言 > 正文

如何使用GetOpt :: Long :: GetOptions解析字符串?

如何解决《如何使用GetOpt::Long::GetOptions解析字符串?》经验,为你挑选了3个好方法。

我有一个带有可能的命令行参数的字符串(使用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
           );

有没有好/更好的方法?



1> Drew Stephen..:

退房的部分由任意字符串解析选项中进行的Getopt ::龙文页,我觉得它你在寻找什么.



2> user11318..:

而不是在空格上拆分,使用内置的glob函数.除了在空格上拆分外,还将执行标准命令行扩展,然后返回一个列表.(例如*会给出一个文件列表等).我还建议在一般原则上本地化@ARG.

除此之外,这是您可以在不重写GetOptions的情况下完成此任务的唯一方法. (显然我需要更仔细地阅读文档.)



3> Jagmal..:

哇!!!

我想我可以使用bentilly和dinomite的答案并执行以下操作:

使用glob来执行标准的命令行扩展

将glob之后的数组传递给GetOpt :: Long的GetOptionsFromArray方法(参见此处)

代码看起来像......

GetOptionsFromArray ([glob ($input_line)]);

那只是一行..酷(我知道我必须做一些错误检查等)..但它的酷...

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有