Se faccio questo:Perché il mio programma Perl stampa il messaggio di aiuto quando un argomento ha 0 come valore?
GetOptions(
'u=s' => \$in_username,
'r=i' => \$in_readonly,
'b=i' => \$in_backup
);
exit usage() unless $in_username && $in_readonly && $in_backup;
e chiamare il programma come questo:
./app.pl -u david -r 12 -b 0
si traduce sempre nel chiamare l'uso(), quindi ovviamente il 0 non è visto come un valore intero. Cosa posso fare per accettare valori interi E 0?
L'affermazione "lo 0 non è visto come un valore intero" è corretto ma "0" viene interpretato come falso: "A s il valore calar è interpretato come TRUE nel senso booleano se non è la stringa nulla o il numero 0 (o la sua stringa equivalente, "0"). Il contesto booleano è solo un tipo speciale di contesto scalare in cui non viene mai eseguita alcuna conversione in una stringa o in un numero. "La risposta di Dancrumb è corretta anche se non è esplicita in merito all'errore. Http://perldoc.perl.org/perldata.html – msw