Почему моя программа Perl печатает сообщение справки, когда аргументы имеют 0 как значение?

Если я делаю это:

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?

6
задан brian d foy 28 March 2010 в 19:14
поделиться

1 ответ

Когда обрабатывается как логическое значение, 0 рассматривается Perl как ложное значение

Вам нужно что-то вроде

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

EDIT

Пожалуйста, также посмотрите отличный комментарий msw к исходному вопросу

{{1} }
11
ответ дан 9 December 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: