$和%运算符一起使用

时间:2013-02-16 00:03:02

标签: perl

我正忙着学习Perl,我已经获得了一些代码来查看和解决。

foreach $field (keys %$exam)

上面的代码是我难以理解的区域。我认为$是标量,%是哈希,所以我不确定%$是什么。

任何帮助表示赞赏!

谢谢你们。

3 个答案:

答案 0 :(得分:8)

%$exam表示你使用的不是普通的哈希值,而是一个解除引用的哈希值,即在此语句$exam成为哈希引用之前的某个地方(例如$exam = \%somehash或{{ 1}}用于匿名hashref)。现在,为了使用先前引用的哈希,您必须使用此语法来取消引用它。要明确地使用它,它可以写成$exam = { a => 1 }

答案 1 :(得分:7)

$exam = {a=>1, b=>2}; # anonym hash, $exam is ref for this hash

为了使用这个类似散列的ref,你必须在ref之前使用解引用运算符%

foreach $field (keys %$exam)

例如,对于数组引用

$a = [1,2,3,4]; # anonym arr, $a is ref for this array

因此,您必须在ref $ a之前使用运算符@进行解除引用

foreach $element (@$a) {print $element;}

答案 2 :(得分:2)

这是解除引用 $exam引用变量的语法。