¿Por qué mi programa de Perl imprimir el mensaje de ayuda cuando un argumentos tiene 0 como valor?

StackOverflow https://stackoverflow.com/questions/2417929

Pregunta

Si hago esto:

GetOptions(
    'u=s'    => \$in_username,
    'r=i'   => \$in_readonly,
    'b=i' => \$in_backup
    );

exit usage() unless $in_username && $in_readonly && $in_backup;

y llamar al programa como este:

./app.pl -u david -r 12 -b 0

siempre resulta en llamar uso (), por lo que, obviamente, el 0 no se considera como un valor entero. ¿Qué puedo hacer yo acepta valores enteros y 0?

¿Fue útil?

Solución

Cuando se trata como un valor booleano, 0 se considera que es un valor falso por Perl

Es necesario algo así como

exit usage() unless defined($in_username) && defined($in_readonly) && defined(in_backup);

Editar

excelente comentario Por favor, vea también de RSU a la pregunta original

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top