What does the -> arrow do in Perl?

原文链接:https://stackoverflow.com/questions/4913280/what-does-the-arrow-do-in-perl

In general, -> hints at dereference. This syntax comes from C. An example may be like this:

$pm->run_on_finish( sub {
    my ($pid, $exit_code, $ident, $exit_signal, $core_dump, $data_structure_reference) = @_;
    my $q = $data_structure_reference->{input};
    $results{$q} = $data_structure_reference->{result};
});
 
foreach my $q (@numbers) {
    my $pid = $pm->start and next;
    my $res = calc($q);
    $pm->finish(0, { result => $res, input => $q });
}

While => is equal to comma.

Perl arrow operator has one other use:

Class−>method invokes subroutine method in package Class.

Though it’s completely different than your code sample. Only including it for completeness for the question in the title.

The outer @{} part is a dereference - this implies $m->links is a reference to an array, so this operator deferences it to refer to the array directly, which is then copied to @top_links

Chapter 8 of the ‘Camel Book’ is a good place to learn about references, or the perlref section of the Perl documentation.

The -> arrow operator is an object dereference, in this case fetching the links member of the $m object. Similarly, later chapters of the Camel Book cover Perl’s object oriented support in detail. See the perlobj section of the Perl documentation also.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值