我正在审查一个供应商提供的补丁程序给我们使用的Perl工具,并且我正在努力确定特定类型更改的原因 - 传递给子例程的参数的“@”的预先挂起。Perl中'at'(@@)的含义是什么?
举例来说,这是一个行:
my ($genfd) = @_;
现在是:
my ($genfd) = @@_;
并非是一个Perl的开发者,我在学习上到这里,但到目前为止,我understand that '@_'是提供给封装子程序的参数。
I also understand上面的赋值(其中'$ genfd'用左括号括起来)将'@_'转换为列表,然后将'genfd'标量变量赋值给该列表的第一个元素。这应该导致子程序的第一个参数被存储在'genfd'中。
我完全坚持的是第二个'@'的差异。我有found examples of this usage on GitHub,但从来没有解释过,也没有找到任何Perl引用或SO的解释。任何帮助将非常感激。
(大部分v文件出现在repos中,是人们驱动器的备份。) – ikegami
谢谢@Keith!查看现有文件的一些',v'历史记录显示相同的语法。这个补丁是通过一些内置的技巧来实现的,我希望这个技巧可以将它作为补丁或新版本传递给RCS/CVS,并在逃跑时将其转移。 – thisismyrobot
@thisismyrobot:如果这些文件是RCS或CVS内部的''v'文件,那么'@@ _'完全有效 - 当你检查文件时你会得到正确的Perl'@ _'脱离RCS或CVS。 –