2013-02-16 114 views
4

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

foreach $field (keys %$exam) 

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

任何帮助表示赞赏!

谢谢你们。

+0

http://perlmonks.org/?node=References+quick+reference – ysth 2013-02-16 00:52:50

回答

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

为了使用这个REF像散列你有裁判

foreach $field (keys %$exam)

例如同样为数组引用之前,使用解引用运算符%

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

,让你有之前参考$一个使用运营商@解引用

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

8

%$exam说,你正在使用不正常的哈希值,但是提领一个,即地方本声明$exam之前成为一个散列的参考(例如,对于匿名hashref,为$exam = \%somehash$exam = { a => 1 })。现在,为了使用之前引用的散列,您必须使用此语法对其进行解引用。要明确地使用它,它可以写为%{$exam}