免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2270 | 回复: 8
打印 上一主题 下一主题

关于 hash的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-10 15:15 |只看该作者 |倒序浏览
use XML::RPC;
my $xmlrpc = XML::RPC->new('http://betty.userland.com/RPC2');
my @params = { state1 => 10, state2 => 28, state3=>10 };
my $result = $xmlrpc->call( 'examples.getStateStruct', @params );

上面的程序是XML::RPC的例子程序,能够运行,而且能够取回正确的结果。

但是有个问题,一直比较奇怪 ,这个 @params 是什么类型的数据?
我通过一些方法都不能得到里面的数值。
如何能够遍历 @params里面的键值对??

论坛徽章:
0
2 [报告]
发表于 2008-09-10 16:26 |只看该作者


  1. use Data::Dumper;
  2. print Dumper(@params);

复制代码

论坛徽章:
0
3 [报告]
发表于 2008-09-10 16:31 |只看该作者
所以我经常说CU的很多人缺少解决问题的思路。
看我的注释掉的代码应该就明白了。
本来我也是不知道的,但是我这么做之后,就知道了。

  1. #!/usr/bin/perl

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

  5. #my @params = ( { state1 => 10, state2 => 28, state3=>10 }, { a=>10 } );

  6. #print Dumper(@params);

  7. my @params = { state1 => 10, state2 => 28, state3=>10 };

  8. foreach my $tmp( @params )
  9. {
  10.         my %tmp_hash = %{ $tmp };
  11.         foreach my $key( keys %tmp_hash )
  12.         {
  13.                 print $key."=>".$tmp_hash{$key}."\n";
  14.         }
  15. }
复制代码

论坛徽章:
0
4 [报告]
发表于 2008-09-10 16:32 |只看该作者
补充一下。
LZ的这个代码写得不规范,所以有这样的疑惑。

论坛徽章:
0
5 [报告]
发表于 2008-09-10 16:45 |只看该作者


  1. use XML::RPC;

  2.     my $xmlrpc = XML::RPC->new('http://betty.userland.com/RPC2');
  3.     my $result = $xmlrpc->call( 'examples.getStateStruct', { state1 => 12, state2 => 28 } );

复制代码


这才是cpan上的原例

[ 本帖最后由 hitsubunnu 于 2008-9-10 18:44 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2008-09-10 18:39 |只看该作者
就算是原例,也有写得太晦涩了的。

论坛徽章:
0
7 [报告]
发表于 2008-09-10 20:39 |只看该作者
{ state1 => 10, state2 => 28, state3=>10 } 创建一个hash的引用
@param=...  赋值到数组,即把这个引用放到$param[0]

取值可以
$param[0]->{state1}

看这个
perlreftut - Mark's very short tutorial about references
http://bbs.chinaunix.net/viewthr ... p%3Bfilter%3Ddigest

论坛徽章:
0
8 [报告]
发表于 2008-09-11 12:19 |只看该作者
有些基本原则记住就好了

@xxx一定是一个array了, 给array赋值就是一个list

{ } 一定是一个 hash reference

上面的写成 @param = ( {....} ); 估计大伙都懂了。

但是Perl Hacker大部分都被Larry带坏了, 追求简捷, 整的云山雾罩的

论坛徽章:
0
9 [报告]
发表于 2008-09-11 15:32 |只看该作者
如果实际意义是那个,这么写确实不好
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP