Если я делаю это:
GetOptions(
'u=s' => \$in_username,
'r=i' => \$in_readonly,
'b=i' => \$in_backup
);
exit usage() unless $in_username && $in_readonly && $in_backup;
и назовите программу как это:
./app.pl -u david -r 12 -b 0
это всегда приводит к вызову использования (), таким образом, очевидно, этот 0 не рассматривается как целочисленное значение. Что может я действительно принимать целочисленные значения И 0?
Когда обрабатывается как логическое значение, 0 рассматривается Perl как ложное значение
Вам нужно что-то вроде
exit usage() unless defined($in_username) && defined($in_readonly) && defined(in_backup);
EDIT
Пожалуйста, также посмотрите отличный комментарий msw к исходному вопросу
{{1} }