免费注册 查看新帖 |

Chinaunix

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

求助正确输出HASH的数据。 [复制链接]

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-11-21 16:36 |只看该作者 |倒序浏览
20可用积分
想尝试复原tracert的结果数据,但是dump出来以后不知道怎么弄。。
要取的信息是hops里面的信息。
程序代码如下:
  1. #!/usr/bin/perl

  2. use Data::Dumper;
  3. use Net::Traceroute::PurePerl;

  4. my $t = new Net::Traceroute::PurePerl(
  5.      host           => 'www.baidu.com',
  6.      debug          => 0,
  7.      query_timeout  => 1,
  8.      packetlen      => 40,
  9.      concurrent_hops    => 2,
  10.      protocol       => 'udp', # Or icmp
  11. );
  12. $t->traceroute;
  13. print $acb;
  14. print Dumper($t->{'hops'});
  15. #@results=$t->pretty_print;
  16. #@results=split(/\n/,$t->pretty_print);
  17. #foreach my $res (@results){
  18. #       print "aaaaaaaaaaaaa:$res\n";
  19. #}
  20.     # max_ttl        => 100,
复制代码
结构是:[code]Net::Traceroute:urePerl=HASH(0x1419c70)$VAR1 = bless( {
                 '_local_port' => 46300,
                 'query_timeout' => '1',
                 'protocol' => 'udp',
                 'packetlen' => '40',
                 'max_ttl' => '30',
                 'trace_program' => 'traceroute',
                 '_destination' => 's

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
2 [报告]
发表于 2013-11-21 16:58 |只看该作者
不知道怎么弄。{:2_176:}

论坛徽章:
5
亥猪
日期:2013-10-15 13:41:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龙
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
3 [报告]
发表于 2013-11-21 18:38 |只看该作者
本帖最后由 lkk_super 于 2013-11-21 18:40 编辑

普通的数据 用 YAML 模块的 dump 就能弄回去,这个 貌似不行 额  等高手解答

论坛徽章:
1
天蝎座
日期:2013-11-25 10:40:37
4 [报告]
发表于 2013-11-21 20:18 |只看该作者
$t->{'hops'} 本身就是一个hashref啊,直接->{}不就可以了么

论坛徽章:
0
5 [报告]
发表于 2013-11-21 20:49 |只看该作者
$temp  = Dumper($aaaaa);

$bbbbb = eval($temp);


论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
6 [报告]
发表于 2013-11-21 21:56 |只看该作者
同意,虽然也是个对象。但是当hash用还是绰绰有余的。
dqw233 发表于 2013-11-21 20:18
$t->{'hops'} 本身就是一个hashref啊,直接->{}不就可以了么

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
7 [报告]
发表于 2013-11-21 22:48 |只看该作者
本帖最后由 104359176 于 2013-11-21 22:48 编辑

Perl 语言中
  1. Data::Dumper, YAML
复制代码
等模块对于对象(bless 过的散列引用)输出的数据结构表示形式和这种数据结构的字面量表示是不同的。只有 JavaScript, Lisp 的对象的打印形式和字面量形式是统一的。
解决这个问题的办法是,对这个结构进行解析,分离出散列字面量和类名,然后用代码动态的生成这个对象。

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
8 [报告]
发表于 2013-11-22 15:40 |只看该作者
回复 6# stanley_tam


    我知道,但是结构太怪异了。。

    不知道怎么还原。。但是我换了个方法写出来了。。

论坛徽章:
1
天蝎座
日期:2013-11-25 10:40:37
9 [报告]
发表于 2013-11-22 22:13 |只看该作者
回复 8# 墨迹哥


    my $h = {%{$object}};
    print dump $h;

论坛徽章:
3
未羊
日期:2013-11-18 15:17:06酉鸡
日期:2013-12-06 17:07:16天蝎座
日期:2014-06-11 12:37:07
10 [报告]
发表于 2013-11-25 12:05 |只看该作者
回复 9# dqw233


    我要的是把hops里面的数据循环全部打印出来。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP