Почему моя Perl-программа печатает справочное сообщение, когда аргумент имеет значение 0 в качестве значения? - PullRequest
6 голосов
/ 10 марта 2010

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

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

это всегда приводит к вызову use (), поэтому очевидно, что 0 не рассматривается как целочисленное значение. Что я могу принять целочисленные значения И 0?

1 Ответ

11 голосов
/ 10 марта 2010

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

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

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

EDIT

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

...