@ $和$$在Perl中意味着什么?

Bri*_*ian 12 variables syntax perl

好的,关于奇怪语法的两个问题.我正在研究一些需要修改的旧Perl代码,我遇到了以下行:

@$tmp=split(/,/,$tmpVals);
Run Code Online (Sandbox Code Playgroud)

我不知道如何读取它,看起来RHS正在拆分变量字符串,所以这很好,但它是左手边我被抛出.世界上有什么@$,据我所知,它不是默认变量.有人知道它的意义吗?

然后有$$,我读过的通常代表Perl PID.但是,在这种情况下,它出现在veriable/assignment语句之前.它有相关的影响吗?

$$tmp=$row[1];
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Mic*_*man 15

你所看到的不是特殊的perl变量,而是引用的实例.它们在perlref中有描述.

这些是符号引用:如果$tmp包含"myvar",则将赋值变量@myvar.这同样适用于第二个例子.

  • @Brian =>你可以使用`@ {$ tmp}`,这意味着与`@ $ tmp`相同.当变量是一个简单的标量时,Perl允许你删除括号. (9认同)
  • 无法从提供的代码中了解这些是否是符号或"硬"引用.在任何一种情况下都使用相同的语法(除了在`use strict`下不允许使用符号引用) (6认同)