免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jnanako
打印 上一主题 下一主题

Help,函数返回数组引用的问题? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 2010-05-27 14:32 |只看该作者
回复 8# jnanako


怎么会为空呢,我这里是正常的。
  1. #!/usr/bin/perl -w

  2. use strict;
  3. use Data::Dumper;

  4. sub count{
  5.     my @count = (1,2,3,4);
  6.     my @value = ('aa','bb','cc');
  7.     my $c_ref=\@count;
  8.     my $v_ref=\@value;
  9.     return $c_ref,$v_ref;
  10. }

  11. my ($result1,$result2) = &count;

  12. print Dumper($result1);
  13. print Dumper($result2);
复制代码

论坛徽章:
0
12 [报告]
发表于 2010-05-27 14:34 |只看该作者
如果你不确定括号能不能省,就把它加上。养成把代码写全的习惯,这样以后也好维护。

return $c_ref,$v_ref}#

这里可能还缺分号。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
13 [报告]
发表于 2010-05-27 14:36 |只看该作者
#!perl64/bin/perl
       
@t=split /,/ ,&count;
print $t[0],"\n";#结果同print1
print $t[1],"\n";#结果同 ...
jnanako 发表于 2010-05-27 14:32



count的返回值是list,不是用","分开的字符串

论坛徽章:
0
14 [报告]
发表于 2010-05-27 14:38 |只看该作者
@t=split /,/ ,&count;  这个是问题所在

论坛徽章:
0
15 [报告]
发表于 2010-05-27 14:42 |只看该作者
"$c_ref,$v_ref" 这里返回的不再是引用,而是一个字符串。所以数组内存被释放,当然得不到东西了。

论坛徽章:
0
16 [报告]
发表于 2010-05-27 14:42 |只看该作者
回复 10# jnanako

  1. return "$c_ref,$v_ref";
复制代码
这个不是标量是啥?

论坛徽章:
0
17 [报告]
发表于 2010-05-27 14:44 |只看该作者
谢谢几位热心的帮助,是我概念上理解错了。:wink:

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
18 [报告]
发表于 2010-05-27 14:50 |只看该作者
回复 10# jnanako


    return "$c_ref,$v_ref";不能这样写

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
19 [报告]
发表于 2010-05-27 14:52 |只看该作者
回复 12# iamlimeng


    最后一句可以不写分号。。。

论坛徽章:
0
20 [报告]
发表于 2010-05-27 14:54 |只看该作者
回复 18# yybmsrs


正是这个原因,我刚才用下面的代码做了个对比。找到了原因。
@s=qw(1 1 1 1 1 1 1)
$a=\@s;
$b="$a";#引号将reference字符串化了,失去了引用的功能
print $a,"\n";
print $b,"\n";#虽然print的结果和$a一样,但没有引用功能。
print @{$a},"\n";
print @{$b},"\n";#结果为空。

呵呵,刚入门,多谢各位的指导。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP