Perl GetOptions奇怪的逗号在其中一个选项中

时间:2013-06-19 21:14:18

标签: perl hash getopt-long

use Getopt::Long::Configure(pass_through);
# ....
GetOptions(
        "display=s"  => \$display, 
        "input=s",   => \$input,    # A strange comma right after "input=s", 
);

有人可以为我解释上面的Perl代码吗? 第二个选项“input = s”,有一个奇怪的逗号。 这个逗号在这里有什么特别的含义吗?

非常感谢,

1 个答案:

答案 0 :(得分:3)

不,这个逗号主要是错位的,完全没有意义。

但是,它不会影响代码,因为您传递的参数是作为哈希传递的,哈希基本上只是键值对列表。 胖子逗号(其他语言中的哈希火箭)=>也可以被视为一个简单的逗号 - 它主要用于表示这样的键值对。

您也可以写下来:

GetOptions(
    "display=s", \$display,
    "input=s", \$input,
)

使用您的附加逗号后,它变为:

GetOptions(
    "display=s", \$display,
    "input=s", , \$input,
)

它根本不会改变列表,因为两个或多个逗号和/或火箭只是被perl视为一个逗号。

@a = (1, 2, 3, , , 6 => 7, 6);
print join(",", @a), "\n";

1,2,3,6,7,6

所以:它不会造成伤害,但由于它会引起混淆,我建议将其删除。