Perl Getopt::Long 相关问题 - 互斥命令行参数

Dr.*_*ust 5 perl command-line getopt

我的 perl 脚本中有以下代码:

我的 $ 目录;
我的文件;
我的 $help;
我的$man;
我的 $verbose; 

undef $目录;
undef @files;
undef $help;
undef $man;
undef $verbose;

获取选项(
           "dir=s" => \$directory, # 带有默认值的可选变量 (false)
           "files=s" => \@files, # 允许逗号分隔的可选变量
                                # 文件名列表以及多个 
                    # 此选项出现的次数。
           “帮助|?” => \$help, # 带有默认值的可选变量 (false)
           "man" => \$man, # 带有默认值的可选变量 (false)
           "verbose" => \$verbose # 带有默认值的可选变量 (false)
          );

    如果(@files){
    @files = split(/,/,join(',', @files));
    }

处理互斥命令行参数的最佳方法是什么?在我的脚本中,我只希望用户只输入“--dir”或“--files”命令行参数,但不能同时输入两者。反正有没有配置Getopt来做到这一点?

谢谢。

Cha*_*ens 4

我认为 Getopt::Long 中没有办法做到这一点,但是您自己实现它很容易(我假设有一个使用函数返回一个字符串,告诉用户如何调用该程序):

die usage() if defined $directory and @files;
Run Code Online (Sandbox Code Playgroud)