Por que meu programa PERL imprime a mensagem de ajuda quando um argumento tem 0 como um valor?
-
19-09-2019 - |
Pergunta
Se eu fizer isso:
GetOptions(
'u=s' => \$in_username,
'r=i' => \$in_readonly,
'b=i' => \$in_backup
);
exit usage() unless $in_username && $in_readonly && $in_backup;
e ligue para o programa como este:
./app.pl -u david -r 12 -b 0
Isso sempre resulta em chamar o uso (), então obviamente o 0 não é visto como um valor inteiro. O que posso aceitar valores inteiros e 0?
Solução
Quando tratado como um booleano, 0 é considerado um valor falso por Perl
Você precisa de algo como
exit usage() unless defined($in_username) && defined($in_readonly) && defined(in_backup);
EDITAR
Por favor, veja também o excelente comentário de RSW para a pergunta original
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow