我正在审查我们使用的Perl工具提供的供应商提供的补丁,我正在努力确定特定类型的更改的原因 - 传递给子例程的参数的'@'预先挂起.
例如,一行是:
my ($genfd) = @_;
Run Code Online (Sandbox Code Playgroud)
就是现在:
my ($genfd) = @@_;
Run Code Online (Sandbox Code Playgroud)
不是Perl开发人员,我在这里学习,但到目前为止,我知道'@_'是提供给封闭子程序的参数.
我也理解上面的赋值('$ genfd'包含在左侧的括号中)将'@_'强制转换为列表,然后将'genfd'标量变量赋给该列表的第一个元素.这应该导致子程序的第一个参数存储在'genfd'中.
我完全坚持的是第二个'@'的不同之处.我在GitHub上找到了这种用法的例子,但从未提供过解释,也无法找到任何Perl引用或SO的解释.任何帮助将非常感激.