서브 루틴하려고 다음 변수를 할당 I가 내가 뭘하려고하는 것은 $variableB
을 설정 한 후 &this_subroutine
과 goto NOWGOHERE
을하지만 난 단지 얻을 수있다펄 것은, Getopt :: 긴
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
인쇄 할 수없는 것 경우 중 하나 'b=s' => \$variableB,
또는 sub { &this_subroutine; goto NOWGOHERE;0 },
를 사용하여, 모두 하나 또는 다른, 아니 할, 내가 누락되거나 잘못된 구문하고있는 중이 분명 뭔가가있다?
'b=s' => \$variableB, sub { &this_subroutine; goto NOWGOHERE; },
을 사용하면 작동하지 않는 것 같습니까? 당신이 결코 할당하지 않기 때문에
당신의 도움이 많이 감사합니다, 많은 감사
@DaveSherohman - 'b'=> sub {$ variableB = $ _ [0]; this_subroutine(); NOWGOHERE로 가십시오; },'$ variableB는'b'와 같고, 당신이 옵션 이름을 전달한 것처럼 보입니다. 그러나''b '=> sub {$ variableB = $ _ [1]; this_subroutine(); NOWGOHERE로 가십시오; },'$ variableB는 명령 행에서 제공 한 인수가 아니라'1'과 같습니다. –
그 이유는'= s'이 여전히 필요했기 때문이라고 생각합니다. 편집을 참조하십시오. 도움을 많이 주셔서 감사합니다. –