4

我现在正忙于学习 Perl,并且已经给了我一些代码来查看和“解决”。

foreach $field (keys %$exam)

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

任何帮助表示赞赏!

多谢你们。

4

3 回答 3

8

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

于 2013-02-16T00:16:19.713 回答
7
$exam = {a=>1, b=>2}; # anonym hash, $exam is ref for this hash

为了像哈希一样使用这个 ref,你必须%在 ref 之前使用解引用运算符

foreach $field (keys %$exam)

例如,对于数组 ref 也是如此。

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

所以你必须@在 ref $a 之前使用运算符来取消引用

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

于 2013-02-16T00:21:25.433 回答
2

这是取消引用 $exam引用变量的语法。

于 2013-02-16T00:04:26.203 回答