我只是想学习一点Perl并且遇到过这个问题:
foreach $element (@{$records})
{
do something;
}
对我的新手来说,这是:
“对于名为@ {$ records}的数组中的每个元素,执行某些操作”
但是,因为这似乎是一个不太可能的数组名称(完全使用“@{$
”),我想它不是那么简单吗?
我也遇到了“%$
”一起使用。
我知道%
表示哈希,$
表示标量,但不知道它们的含义。
任何人都可以对这些有所了解吗?
答案 0 :(得分:10)
在Perl中,您可以拥有一个数据结构的引用(指针):
# an array
my @array;
# a reference to an array
my $ref = \@array;
如果您有使用数组的引用,则需要取消引用
@{ $ref }
如果您需要访问
中的元素$array[0]
您可以使用参考
执行相同的操作${$ref}[0]
大括号{}
是可选的,您也可以使用
$$ref[0]
@$ref
但我个人认为它们的可读性较差。
这同样适用于所有其他类型(对于哈希引用,为%$
)。
有关详细信息,请参阅man perlref;有关教程,请参阅man perlreftut。
修改强>
箭头运算符->
也可用于取消引用数组或散列
$array_ref->[0]
或
$hash_ref->{key}
有关详细信息,请参阅man perlop
答案 1 :(得分:3)
如果您对数组或散列有引用,则可以使用标量来保存引用:
my $href = \%hash;
my $aref = \@array;
如果要取消引用这些引用,可以使用适合引用类型的符号:
for my $element (@$aref) {
}
for my $key (keys %$href) {
}