У меня есть следующий фрагмент кодаPerl Getopt :: Long Присвоение переменной затем будет подпрограмму
my $use = "Use: " . basename($0) . " [options]";
my $version = "Version: 0.1 \n";
my $variableA;
my $variableB;
GetOptions(
'a=s' => \$variableA,
'help' => sub { print $use; exit 0 },
'version' => sub { print $version; exit 0 },
'b' => sub { \$variableB, &this_subroutine; goto NOWGOHERE; },
);
die "Incorrect use. \n" unless (defined $variableA || defined $variableB);
sub this_subroutine {
print "$variableB\n";
}
NOWGOHERE: print "HELLO I'M NOW HERE\n";
То, что я пытаюсь сделать, это установить $variableB
, а затем сделать &this_subroutine
и goto NOWGOHERE
, но я могу только получить это сделать один или другой, но не оба одновременно, используя либо 'b=s' => \$variableB,
или sub { &this_subroutine; goto NOWGOHERE;0 },
При попытке сделать как я не могу напечатать $variableB
, есть что-то очевидно, я пропускаю или делаю неправильно синтаксически?
Использование 'b=s' => \$variableB, sub { &this_subroutine; goto NOWGOHERE; },
похоже не работает?
ваша помощь очень ценится, большое спасибо
@DaveSherohman - При использовании ''b' => sub {$ variableB = $ _ [0]; this_subroutine(); goto NOWGOHERE; }, '$ variableB равно' b', который, как вы сказали, передает имя опции. Однако при использовании ''b' => sub {$ variableB = $ _ [1]; this_subroutine(); goto NOWGOHERE; }, '$ variableB равно' 1', а не аргумент, который я предоставил в командной строке? –
Понял причину, потому что '= s' все еще требовалось, см. Редактирование, большое спасибо за вашу помощь. –