+ -
当前位置:首页 → 问答吧 → perl里数组作为引用参数的问题

perl里数组作为引用参数的问题

时间:2010-10-14

来源:互联网

hello,

我写了个小程序,有个函数需要传递一个数组作为参数,最好是引用参数,这样函数里可以向数组里添加数据,函数执行完毕后,数组可以作为函数调用结果的一部分。不知道可不可行,目前我是这么写的。
  1. sub count_leaf (\@$) {
  2.         my ($list,$node_id)=@_;

  3. if(@$value[2] > 0)
  4.           {
  5.                 @$value[6] = count_leaf(@$list,@$value[0]);
  6.                 $leaf_num = $leaf_num + @$value[6];
  7.           }
  8.           else
  9.           {
  10.                 push(@$list,@$value[0]);
  11.                 $leaf_num = $leaf_num + 1;
  12.           }
  13. }
复制代码
此函数会递归调用,目前的问题是,执行到含有“@$list”的部分,也就是要使用这个数组的时候,会报错。
Can't use string ("111") as an ARRAY ref whi
PI_Tools\scripts\Import_FL_ex.pl line 162.
数组是初始化为"111"的,请问要怎么样才可以,谢谢!

作者: hepower   发布时间: 2010-10-14

看不太明白~感觉写的有点乱~

作者: x9x9   发布时间: 2010-10-14

  1. sub count_leaf (\@$) {   #这里定义入参是个引用
  2.         my ($list,$node_id)=@_; #入参是个引用,这里只有$list被赋值

  3. if(@$value[2] > 0)   #$value从何而来
  4.           {
  5.                 @$value[6] = count_leaf(@$list,@$value[0]);   #入参是数组,和定义的不同
  6.                 $leaf_num = $leaf_num + @$value[6];
  7.           }
  8.           else
  9.           {
  10.                 push(@$list,@$value[0]);
  11.                 $leaf_num = $leaf_num + 1;
  12.           }
  13. }
复制代码
代码太片断,看不出其他问题,估计是输入参数的问题

作者: 珞水的大叔   发布时间: 2010-10-14

count_leaf第一次调用的参数是什么呢

作者: yybmsrs   发布时间: 2010-10-14

我也看不明白,不过有感觉
@$value[2] 和 @{$value[2]} 是不一样的,觉得是这里。以前学这里的时候很晕

作者: zhlong8   发布时间: 2010-10-14