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?

Foi útil?

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
scroll top