【问题标题】:How to get the 2-D Array data in perl script?如何在 perl 脚本中获取二维数组数据?
【发布时间】:2015-12-22 13:45:56
【问题描述】:

我们有一个用 perl 编写的客户端代码,它正在尝试连接到 WebService 以进行 API 调用。

  1. 此 API 调用是用 java 编写的,它返回一个二维字符串数组。
  2. 这是客户端的代码:
评估{ $service = SOAP::Lite->service("这里有一些 WS 链接"); }; 如果($异常 = $@){ print("连接WS失败:$exception"); 返回0; } 我的$状态; 评估{ $status = $service->getStatus(); }; 如果($异常 = $@){ 打印(“$异常”); 返回0; }

我的问题是如何从这个“$status”值中提取实际数据。当我要打印这个“$status”值时,我只能看到这个:

数据库> p $状态 stringArrayArray=HASH(0x126e2ac0) 数据库>

【问题讨论】:

    标签: perl type-2-dimension


    【解决方案1】:

    这意味着您的模块返回了一个哈希引用。你可以看到里面有什么,例如Data::Dumper

    或者:

    foreach my $key ( keys %$status ) { 
       print "$key => ", $status -> {$key}, "\n"; 
    }
    

    见:perlref

    【讨论】:

    • 感谢您的提示。但如果我使用 Data::Dumper,我会得到: $VAR1 = bless( { 'item' => { 'item' => undef } }, 'stringArrayArray' );这完全失去了我。
    • 你的 api 正在返回垃圾。这就是你问题的根源——你有一个嵌套的哈希,你可以访问为:$service -> {item} -> {item},但它是未定义的。
    • 感谢您的帮助。 Web 服务端有一个小问题。在我把它修好之后,这里是来自 dumper 的全套数据,“$VAR1 = { 'item' => { 'item' => '0' } }; ”。但是包中仍然没有实际数据。我想我的问题是客户端(在 perl 中)真的可以从 ws 获得全套响应吗?
    • 是的,当然。您不必使用soap lite,您可以使用LWP 和解析器手动处理响应。这至少应该给出一个提示。
    猜你喜欢
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多