Я исправил это. Видите, хотя --start является глобальным, его значение по умолчанию может варьироваться в зависимости от совершаемого вами действия. Итак, я делаю это:
my %global_args = (
"help" => undef,
"start=s" => undef,
"end=s" => undef,
"hosts" => undef,
.....
);
do_status();
sub do_status() {
my %local_args = (
"duration" => undef,
"status=s" = > undef,
...
);
my %args = (%global_args, %local_args);
if(!GetOptions(\%args, keys %status_args)) {
die "blah blah\n";
}
}
Теперь, когда я запускаю скрипт и печатаю Dumper (\% args), я получаю:
$VAR1 = {
'cluster' => 'music.mud',
'end' => 'now + 10 min',
'start' => 'now',
'property' => 'music'
};
Что я и должен увидеть. Спасибо, ребята, за понимание.