哈希参数的传递问题

哈希参数的传递问题

哈希参数的传递问题
sub getSendDataStream
{
my (%datas) = @_;
print @_; #
print %datas; #
}

my %datas = (
'key4' => 'value4',
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);

$agent->getSendDataStream(%datas); #调用getSendDataStream

执行后发现:
print @_; #结果是Agent=HASH(0x1f38870)key2value2key1value1key4value4key3value3
print %datas; #结果是value4key3Agent=HASH(0x1f38870)key2value1key4value3value2key1
哈希结构的顺序乱掉了!!这是什么原因?我传递哈希结构参数的方式不对?如何正确的传递哈希参数?请高手指教.不胜感激!

最好传引用.
#!/usr/bin/perl----u.
#!/usr/bin/perl

use strict;
use warnings;

sub getSendDataStream {
my $datas = shift;
print %$datas; #
}

my %datas = (
'key4' => 'value4',
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3'
);

getSendDataStream(\%datas); #调用getSendDataStream

anthony和alexru的方法都是可行的.非常感谢.
传引用参数,效率应该更高一些.