不行吧,你要写 wowo(\...@a , \...@b )

或者 wowo($a, $b)  , 而 $a, $b本身就是ref变量

sub里面都是靠 shift 来进行标量处理参数的



2009/12/10 Xiaojun Deng <[email protected]>

> On Thu, Dec 10, 2009 at 10:48:39AM +0800, cnhack TNT wrote:
> >楼上正解,想要哈希或数组作为子程序的参数,请传递它们的引用给子程序
> >
>
> 如同c的指针
> Perl默认能传数组给函数吗?
>
> >2009/12/10 Michael Zeng <[email protected]>
> >
> >> 是应该用引用
> >>
> >> 这样写传参数很晦涩, 特别是传数组的时候,而且开销很大,如...@list很大的时候
> >>
> >>
> >>
> >> sub check{
> >>        my @d...@_[0];
> >>        my @n...@_[1];
> >>        my $n=0;
> >>        for(my $i=0;$i<@num;$i++){
> >>                if($dd[$num[$i]] ne 'NA'){
> >>                        $n++;
> >>                }
> >>        }
> >>        return $n;
> >> }
> >>
> >> 用引用会比较清晰
> >>
> >> 2009/12/10 钟声 <[email protected]>
> >>
> >> 引用应该可以的
> >>>
> >>> $a = \...@one;
> >>> $b =...@two;
> >>> check($a,$b);
> >>>
> >>>
> >>> sub check {
> >>>       my ($num,$dd) = @_;
> >>>      $num->[0];
> >>>      $dd   ->[0];
> >>>
> >>> }
> >>>
> >>> 2009/12/10 camelbbs <[email protected]>
> >>>
> >>> 请问我的子程序想处理两个数组参数,应该怎么写,下面这样好像不行:
> >>>>
> >>>> sub check{
> >>>>        my @dd=shift;
> >>>>        my @num=shift;
> >>>>        my $n=0;
> >>>>        for(my $i=0;$i<@num;$i++){
> >>>>                if($dd[$num[$i]] ne 'NA'){
> >>>>                        $n++;
> >>>>                }
> >>>>        }
> >>>>        return $n;
> >>>> }
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>
> >>
> >> --
> >>            Yours Sincerely
> >>                    Zeng Hong
> >>
> >> >
> >>
> >
> >>
>
> >
>


-- 
           Yours Sincerely
                   Zeng Hong

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。
 要在此论坛发帖,请发电子邮件到 [email protected]
 要退订此论坛,请发邮件至 [email protected]
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

回复