我正忙着学习Perl,我已经获得了一些代码来查看和解决。
foreach $field (keys %$exam)
上面的代码是我难以理解的区域。我认为$是标量,%是哈希,所以我不确定%$是什么。
任何帮助表示赞赏!
谢谢你们。
答案 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)