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

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

非常感谢,

4

1 回答 1

3

不,这个逗号主要是放错地方了,根本没有意义。

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

你也可以这样写:

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

所以:它没有害处,但由于它会导致混淆,我建议将其删除。

于 2013-06-19T21:21:50.170 回答