shift 难道还有别的作用

shift 难道还有别的作用

sub print_hash {
my %hash = @_;
while ((my $key, my $value) = each %hash) {
print "$key => $value\n";
}
}
---------------------------------------------------------------------------------
sub print_hash {
my $hashref = shift;
while ((my $key, my $value) = each %$hashref) {
print "$key => $value\n";
}
}

在程序2中应该是SHIFT弹出第一个数给$hashref.这样结构应该和程序1不一样呀。

但结果是一样的。

低中高手齐出手吧!
贴完整的代码
这样是应该不一样的
有可能前面那个没有用->调用
它们的结果一样,但调用的时候传入参数形式不一样
莫名其妙
第二个函数中%$hashref 明显在解引用,传参都不同,在猜谜吗