我正在审查我们使用的 Perl 工具的提议的供应商提供的补丁,并且我正在努力确定特定类型更改的原因 - 将“@”前置到传递给子例程的参数中。
例如,一行是:
my ($genfd) = @_;
就是现在:
my ($genfd) = @@_;
我不是 Perl 开发人员,我在这里边走边学,但到目前为止,我知道“@_”是提供给封闭子例程的参数。
我也理解上面的赋值('$genfd' 包含在左侧的括号中)将'@_' 转换为列表,然后将'genfd' 标量变量分配给该列表的第一个元素。这应该导致子例程的第一个参数存储在“genfd”中。
我完全坚持的是第二个'@'有什么不同。我在 GitHub 上找到了这种用法的示例,但从来没有解释过,也找不到任何 Perl 参考或 SO 的解释。任何帮助将非常感激。