显示哈希的内容{Perl}

时间:2017-07-25 08:54:06

标签: perl hash

我目前正在使用API​​,我编写了一个简短的脚本来获取我创建的项目的详细信息。我能够成功地使用Data :: Dumper显示整个内容,但我无法显示特定元素或将其分配给变量。 这是我的简短代码:

# !/usr/bin/perl
use strict;
use warnings;
use TestLink::API;
use Data::Dumper;
my $tl=TestLink::API->new('http://127.0.0.1/testlink-1.9.16/lib/api/xmlrpc/v1/xmlrpc.php', 'a64aaa61db4e9f65d4e52745b86e3d8f');
print Dumper($tl->getProjectByName('Created_With_API'));
my %hachage = $tl->getProjectByName('Created_With_API');

此代码显示我的信息,即:

$VAR1 = {
          'prefix' => 'CWAPI',
          'notes' => 'res ipsa loquiter',
          'opt' => {
                     'inventoryEnabled' => '1',
                     'testPriorityEnabled' => '1',
                     'automationEnabled' => '1',
                     'requirementsEnabled' => '1'
                   },
          'options' => 'O:8:"stdClass":4:{s:19:"requirementsEnabled";i:1;s:19:"testPriorityEnabled";i:1;s:17:"automationEnabled";i:1;s:16:"inventoryEnabled";i:1;}',
          'color' => '',
          'option_priority' => '0',
          'issue_tracker_enabled' => '0',
          'id' => '14',
          'is_public' => '1',
          'option_reqs' => '0',
          'type' => 'project',
          'api_key' => '9bc99494a418140a1a625257da91d9f855b452c05f498ac2db94cbbbb331db58',
          'name' => 'Created_With_API',
          'option_automation' => '0',
          'reqmgr_integration_enabled' => '0',
          'tc_counter' => '0',
          'active' => '1'
        };

但是当我写

时,我无法显示特定元素
print "$hachage{id}";

我收到错误。我知道,我可能做错了什么,我几天前开始学习Perl这个API,必须有一些糟糕的东西。但我只想知道我做错了什么。 感谢您帮助那些需要时间回答我的人;)

2 个答案:

答案 0 :(得分:2)

getProjectByName没有返回键/值对的列表(这是初始化%hash所需的),它返回一个值,这是对a的引用散列:

my $hachage = $tl->getProjectByName('Created_With_API');

您可以使用以下方法访问单个元素$hachage->{id}。有关详细信息,请参阅perldoc perlreftut

答案 1 :(得分:0)

您需要像这样创建初始化变量

int

(注意美元符号,而不是百分比)

你可以通过my $hachage = $tl->getProjectByName('Created_With_API');

获得你想要的东西

您需要此语法,因为$ tl-> getProjectByName返回对哈希的引用,而不是实际哈希。

讨论了差异here