这个代码片段究竟是什么?

时间:2011-05-27 07:07:59

标签: perl moose

这段代码到底是什么?

...
method go() {
    my %args;
    while ( ref( $_[0] ) eq 'HASH' ) {
        %args = ( %args, %{ shift(@_) } );
    }
    ....
}

取自基于穆斯的包裹......
虽然第一个参数是hashref,做什么? (使用移出的hashref?) 我理解shift(@_)根本就不明白

是什么意思
%hash = (%hash, %{$hashref});

1 个答案:

答案 0 :(得分:5)

虽然@_的第一个元素是对哈希的引用,但是将该哈希引用的内容添加到哈希%args并从@_中删除引用。换句话说,将所有初始哈希参数合并为一个哈希值。

某些哈希值%a = (%a, %b)%a

%b对于某些数组@a = (@a, @b)@a类似于@b,加入@a@b放入单个列表,并将结果分配回@a。对于数组,当然有一个简写push @a, @b用于此目的。