gpt4 book ai didi

perl - Getopt::Declare 与 Getopt::Long

转载 作者:行者123 更新时间:2023-12-04 23:58:45 33 4
gpt4 key购买 nike

我公司使用 Getopt::Declare 作为其命令行选项解析器。我们的期权处理 block 的结构通常如下所示:

Readonly my $ARGS => Getopt::Declare->new(
join( "\n",
"[strict]",
"--engineacct <num:i>\tEngineaccount [required]",
"--outfile <outfile:of>\tOutput file [required]",
"--clicks <N:i>\tselect keywords with more than N clicks [required]",
"--infile <infile:if>\tInput file [required]",
"--pretend\tThis option not yet implemented. "
. "If specified, the script will not execute.",
"[ mutex: --clicks --infile ]",
)
) || exit(1);
有很多东西要看......我试图通过像大多数文档使用的那样使用 HEREDOCS 来简化它:
#!/usr/bin/perl
use strict;
use warnings FATAL => 'all';

use Readonly;

Readonly my $ARGS => Getopt::Declare->new(<<'EOPARAM');
[strict]
--client <client:i> client number [required]
--clicks <clicks:i> click threshold (must be > 5)
EOPARAM
虽然我认为这更容易阅读,但由于某种原因,它不会识别我的任何论点。
perl test.pl --client 5 --clicks 2
我得到无法识别的论点:
Error: unrecognizable argument ('--client')
Error: unrecognizable argument ('154')
Error: unrecognizable argument ('--clicks')
Error: unrecognizable argument ('2')
所以我想我有两个问题:
  • 有没有人成功地将 HEREDOCS 与 Getopt::Declare 一起使用?
  • Getopt::Declare 仍然是选项解析器的合理选项吗?与 Getopt::Long 等其他模块相反
  • 最佳答案

    在您的原始版本中,您的字符串由 --clicks <N:i> 组成后跟一个制表符,然后是 select keywords with more than N clicks [required] .

    在您的修订版本中,您的字符串有空格而不是制表符。

    使用<<"EOPARAM"和“\t ”而不是 <<'EOPARAM'和“”。

    >type x.pl
    use Getopt::Declare;
    Getopt::Declare->new(<<'EOPARAM');
    [strict]
    --client <client:i> client number [required]
    --clicks <clicks:i> click threshold (must be > 5)
    EOPARAM

    >perl x.pl --client 5 --clicks 2
    Error: unrecognizable argument ('--client')
    Error: unrecognizable argument ('5')
    Error: unrecognizable argument ('--clicks')
    Error: unrecognizable argument ('2')

    (try 'x.pl -help' for more information)


    >type x.pl
    use Getopt::Declare;
    Getopt::Declare->new(<<'EOPARAM');
    [strict]
    --client <client:i>\tclient number [required]
    --clicks <clicks:i>\tclick threshold (must be > 5)
    EOPARAM

    >perl x.pl --client 5 --clicks 2
    Error: unrecognizable argument ('--client')
    Error: unrecognizable argument ('5')
    Error: unrecognizable argument ('--clicks')
    Error: unrecognizable argument ('2')

    (try 'x.pl -help' for more information)


    >type x.pl
    use Getopt::Declare;
    Getopt::Declare->new(<<"EOPARAM");
    [strict]
    --client <client:i>\tclient number [required]
    --clicks <clicks:i>\tclick threshold (must be > 5)
    EOPARAM

    >perl x.pl --client 5 --clicks 2

    >

    关于perl - Getopt::Declare 与 Getopt::Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20252682/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com