使用Getopt::Long变量赋值为0时的尴尬

Chentao Yang Lv4

perl 使用 Getopt::Long 模块的时候,你想给两个参数设置默认值,比如:
a,b参数, $a ||= 2, $b ||= 1 一眼看上去好像没什么问题。
如果你不赋值给这两个参数,那么$a的值为2,$b为1.

但如果你想将a,b的值设置为0的时候,问题就来了:
$a ||= 2, $b ||= 1 这样写实际的传递过程是:先判断“||”左边的值的真假,虽然你是已经给a,b赋值了,但是0会被判定为假,所以a, b的值仍然是2和1,你是不会得到你想要的结果的,这是个不大不小的坑。。。

修改方式:

$a = 2 if (!defined $a)
  • Title: 使用Getopt::Long变量赋值为0时的尴尬
  • Author: Chentao Yang
  • Created at : 2017-07-13 23:26:06
  • Updated at : 2023-10-25 11:56:14
  • Link: https://comery.github.io/2017/07/14/Getopt-Long-error/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page
使用Getopt::Long变量赋值为0时的尴尬