perl - 从 Getopt::Long 操作 GetOptions 中的标志类型

标签 perl getopt

如果 GetOptions 中默认启用了标志,是否有办法关闭它们?

这就是我想要的:

  • -verbose 0 关闭详细程度
  • -verbose 1 打开详细程度
  • -verbose 打开详细程度

当前代码(来自 Getopt::Long ):

use Getopt::Long;
my $data = "file.dat";
my $length = 24;
my $verbose = 1;
GetOptions ("length=i" => \$length,   # numeric
            "file=s"   => \$data,     # string
            "verbose"  => \$verbose)  # flag
or die("Error in command line arguments\n");

最佳答案

这不是你描述的方式,而是 documentation描述了由感叹号指定的“可否定选项”,可让您执行此操作:

my $verbose = 1; # default on
GetOptions ('verbose!' => \$verbose);

这允许--verbose(将其设置为1)或--noverbose(将其设置为0)。

关于perl - 从 Getopt::Long 操作 GetOptions 中的标志类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29131686/

相关文章:

perl - 使用Scalar::Util 的弱化会导致无效引用问题吗?

perl - 如何同时对多个文件使用 grep 命令?

perl - 你有好的 Perl 模板脚本吗?

c - 我对这个 C 程序如何工作的理解正确吗?

c - getopt 的多个整数参数?

perl - 如何使用 DateTime 获取当月的最后一天?

perl - 是否可以在不执行其语句的情况下使用或要求 Perl 脚本?

string - DateTime 对象和 YYYY-MM-DD 字符串之间的 MongoDB 区别

php - 如何在 php 中像 python argparse 一样获得 getop() 的高级用法

__main__ 中的 Python getopt()