当参数值为 0 时,为什么我的 Perl 程序会打印帮助消息?

发布于 2024-08-24 05:12:53 字数 365 浏览 5 评论 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

它总是会导致调用usage(),所以显然0不被视为整数值。 我可以做什么接受整数值 AND 0?

If i do this:

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

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

and call the program like this:

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

it always results in calling usage(), so obviously the 0 is not seen as an integer value.
What can i do accept integer values AND 0?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

双手揣兜 2024-08-31 05:12:53

当被视为布尔值时,Perl 认为 0 是假值

您需要类似

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

EDIT

内容,另请参阅 msw 对原始问题的出色评论

When treated as a boolean, 0 is considered to be a false value by Perl

You need something like

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

EDIT

Please also see msw's excellent comment to the original question

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文