这段代码到底是什么?
...
method go() {
my %args;
while ( ref( $_[0] ) eq 'HASH' ) {
%args = ( %args, %{ shift(@_) } );
}
....
}
取自基于穆斯的包裹......
虽然第一个参数是hashref,做什么? (使用移出的hashref?)
我理解shift(@_)根本就不明白
%hash = (%hash, %{$hashref});
答案 0 :(得分:5)
虽然@_
的第一个元素是对哈希的引用,但是将该哈希引用的内容添加到哈希%args
并从@_
中删除引用。换句话说,将所有初始哈希参数合并为一个哈希值。
%a = (%a, %b)
和%a
的 %b
对于某些数组@a = (@a, @b)
和@a
类似于@b
,加入@a
和@b
放入单个列表,并将结果分配回@a
。对于数组,当然有一个简写push @a, @b
用于此目的。