连续的运算符和括号

Rob*_*ert 6 syntax perl brackets operators curly-brackets

我只是想学习一点Perl并且遇到过这个问题:

foreach $element (@{$records})
{
    do something;
}
Run Code Online (Sandbox Code Playgroud)

对于我的新手眼睛,这里写着:"对于一个名为@ {$ records}的数组中的每个元素,做一些事情"但是,因为这似乎是一个不太可能的数组名称(@{$完全用" "),我想它不是那样的简单?

我也遇到了" %$"一起使用.我知道%表示哈希并$表示标量,但不知道它们的含义.

任何人都可以对这些有所了解吗?

Mat*_*teo 10

在Perl中,您可以拥有数据结构的引用(指针):

# an array
my @array;

# a reference to an array
my $ref = \@array;
Run Code Online (Sandbox Code Playgroud)

当你有一个能够使用数组的引用时,你需要取消引用

@{ $ref }
Run Code Online (Sandbox Code Playgroud)

如果您需要访问元素,请参阅

$array[0]
Run Code Online (Sandbox Code Playgroud)

你可以用引用做同样的事情

${$ref}[0]
Run Code Online (Sandbox Code Playgroud)

花括号{}是可选的,您也可以使用

$$ref[0]
@$ref
Run Code Online (Sandbox Code Playgroud)

但我个人发现它们的可读性较差.

这同样适用于其他每种类型(%$对于哈希引用).

男子perlref的细节和人perlreftut的教程.

编辑

箭头运算符->也可用于取消引用数组或散列

$array_ref->[0]
Run Code Online (Sandbox Code Playgroud)

要么

$hash_ref->{key}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅man perlop

  • 我更喜欢使用`$ array - > [0]`访问数组引用中的单个元素 (4认同)