لماذا يقوم برنامج Perl بطباعة رسالة المساعدة عند وجود حجج 0 كقيمة؟
-
19-09-2019 - |
سؤال
إذا قمت بذلك:
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 قيمة خاطئة من قبل بيرل
تحتاج إلى شيء مثل
exit usage() unless defined($in_username) && defined($in_readonly) && defined(in_backup);
تعديل
يرجى أيضا الاطلاع على تعليق MSW الممتاز على السؤال الأصلي
لا تنتمي إلى StackOverflow