1

您好,我正在尝试更好地理解 Perl。我来自 Ruby,并试图围绕 Perl 来寻找乐趣。假设我在这里有这个代码块。

$self->doSomething(
    {   record     => $record,
        listing    => [ $foo, $bar, $baz ],
        passedargs => { something => $val, another => $val2 },
    }
);

究竟定义$args为什么?我阅读 Perl 文档的思考过程类似于my ($self, $args) = @_;意味着doSomething考虑块内的所有内容$args以及是否要访问它。我会my $args = @_[0];

只是好奇我是否正确地考虑了这一点?如果不介意解释?

4

1 回答 1

3

由于您doSomething作为方法调用进行调用,因此第一个参数将是您正在调用该方法的对象(即箭头运算符左侧的对象:)$self

第二个参数将是您在(和之间传递的 hashref )

就像访问任何其他 hashref 一样,您可以访问 hashref 的特定成员。

sub doSomething {
    my ($self, $args) = @_;
    my $record = $args->{record};
于 2014-08-21T15:26:42.003 回答