gpt4 book ai didi

perl - Perl中double 'at'(@@)是什么意思?

转载 作者:行者123 更新时间:2023-12-04 05:18:26 24 4
gpt4 key购买 nike

我正在审查供我们使用的Perl工具的供应商建议的补丁,而我正在努力确定发生特定类型更改的原因-在传递给子例程的参数前添加“@”。

例如,一行是:

my ($genfd) = @_;

就是现在:
my ($genfd) = @@_;

我不是Perl开发人员,而是在旅途中学习,但是到目前为止,我 understand that '@_'是提供给封闭的子例程的参数。

I also understand上面的赋值(“$ genfd”用左括号括起来)将“@_”强制转换为列表,然后将“genfd”标量变量分配给该列表的第一个元素。这将导致子例程的第一个参数存储在“genfd”中。

我完全坚持的是第二个“@”的区别。我有 found examples of this usage on GitHub,但是从没有解释,也没有关于任何Perl引用或SO的解释。任何帮助将非常感激。

最佳答案

看起来像是一个坏补丁。
@@_是语法错误。至少当我有以下Perl源文件时:

#!/usr/bin/perl

use strict;
use warnings;

sub foo {
my ($genfd) = @@_;
}

在其上运行 perl -cw(与Perl 5.14.2结合使用)会给出:
Bareword found where operator expected at tmp.pl line 7, near "@@_"
(Missing operator before _?)
syntax error at tmp.pl line 7, near "@@_"
tmp.pl had compilation errors.

我尚未查看GitHub上的所有示例,但其中许多示例都在带有 ,v后缀的文件中。该后缀由RCS和CVS用于其内部版本控制文件。我认为 @字符具有某些特殊含义,因此将其加倍以表示文字 @字符。 (是的,在Git存储库中具有RCS或CVS内部文件有点奇怪。)

某种RCS或CVS交互是最有可能解释该错误的原因,但可能还有其他原因。

您应该询问提供补丁的人。

关于perl - Perl中double 'at'(@@)是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com