怎么传递两个哈希表到一个函数内??

怎么传递两个哈希表到一个函数内??

有一个函数
sub func
{
     my %a = shift;      #$_[0]试了也不行
   my  %b = shift;
    。。。。。。。。。。。。。。。。。
}

===============
调用:
func(%a,%b);       #func(\%a,\%b);也不行啊


报错啊!!
怎么回事?我在网上查了半天也没找到传递两个哈希参数的文章。
那位高人能介绍下perl的参数传递??
#!/usr/bin/perl

use strict;
use warnings;

my %hash1 = (wgl => '1');
my %hash2 = (gwl => '2');

hash_test(\%hash1, \%hash2);

sub hash_test {
    my $h1 = shift;
        my $h2 = shift;

        print $_ . '=>' . $h1->{$_} . "\n" for (keys %$h1);
        print $_ . '=>' . $h2->{$_} . "\n" for (keys %$h2);
}
这样传哈希表是不行的。func(%a,%b)中a,b两个哈希表位于标量上下文中,@_不是两个哈希表的数组,而是包含a,b所有key和value的数组。
可以将两个哈希表定义成全局变量,然后在func中直接使用。
传哈希表参数使用引用。

何必如此费劲
programming perl里面该有的都有了
用引用就可以了吧
func(\%a ,\%b);

sub func
{
     my $a = shift;     
   my  $b = shift;
   #%{$a} 就是第一个 %a ;
   #%{$b} 就是第二个 %b ;
}
这样就传进来了
谢谢楼上各位热心网友,用引用已经决绝了!
传数组,hash都是用引用方便
那传一个哈希和一个数组呢?
func(\%a ,\@b);

sub func
{
     my $a = shift;     
     my  $b = shift;
   #%{$a} 就是第一个 %a ;
   #@$b 就是第二个 @b ;
}
对吗?
还有一个子例程如何返回一个哈希和数组呢?

返回当然只能返回一个值了。如果要返回多个值,可以学C/C++里面,用引用调用,就可以了。