我有一个misc
由几个脚本使用的模块。每个脚本都接受两个标准选项 (-help
和-verbose
) 以及一堆自己的选项。
所以,现在每个脚本都有
my ($verbose,$quiet) = (1,0);
my $help = undef;
...
GetOptions("verbose|v+" => \$verbose, "quiet|q+" => \$quiet, "help|h" => \$help,
....)
or die "GetOptions: error (see above)\n";
if (defined $help) { usage(); exit; }
$verbose -= $quiet;
这已经很无聊了。
现在,我希望misc
函数也能意识到 的值$verbose
,所以我必须将$verbose
et al 移到misc
并$misc::verbose
在脚本中使用:
杂项:
our $verbose = 1;
my $quiet = 0;
our $help = undef;
our %common_options = ("verbose|v+" => \$verbose, "quiet|q+" => \$quiet, "help|h" => \$help);
sub set_verbose () { $verbose -= $quiet; }
脚本:
GetOptions(\%misc::common_options,"verbose|v","quiet|q","help|h",
"count=i" => \$count, "start=i" => \$start, "mincoverage=i" => \$mincoverage,
"output=s" => \$output, "input=s" => \$input, "targets=s" => \$targets)
or die "GetOptions: error (see above)\n";
if (defined $misc::help) { usage(); exit; }
misc::set_verbose();
这看起来并没有好多少(而且似乎无论如何都不起作用,至少-help
被忽略了)。
那么,人们使用什么来在模块和脚本之间共享命令行选项呢?