$和%运算符一起使用

and*_*son 4 perl

我现在正忙着学习Perl,并且我已经获得了一些代码来查看和"解决".

foreach $field (keys %$exam)
Run Code Online (Sandbox Code Playgroud)

上面的代码是我难以理解的区域.我认为$是标量而%是哈希值,因此我不确定%$是什么.

任何帮助赞赏!

多谢你们.

Art*_*rtM 8

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


ede*_*dem 7

$exam = {a=>1, b=>2}; # anonym hash, $exam is ref for this hash
Run Code Online (Sandbox Code Playgroud)

为了使用像ref这样的ref,你必须%在ref之前使用dereferencing运算符

foreach $field (keys %$exam)

例如,数组引用相同.

$a = [1,2,3,4]; # anonym arr, $a is ref for this array
Run Code Online (Sandbox Code Playgroud)

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

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