显示哈希{Perl}的内容

显示哈希{Perl}的内容,perl,hash,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/xm

我目前正在使用一个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,肯定有很多东西。但我只是想知道我做错了什么。
感谢你对那些愿意花时间回答我的人的帮助

您需要创建并初始化变量,如下所示

my$hachage=$tl->getProjectByName'Created_With_API'

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

您可以通过执行print$hachage->{'id'}来获得所需内容

您需要这种语法,因为$tl->getProjectByName返回对散列的引用,而不是实际的散列

差异已在讨论中。

getProjectByName不返回初始化%哈希所需的键/值对列表,它返回单个值,该值是对哈希的引用:

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

您可以使用例如$hachage->{id}访问单个元素。有关更多信息,请参阅。

谢谢,这就是它不起作用的原因,API文档中说返回所需的project def哈希,否则为false。由于我不太了解Perl,我认为它返回的是哈希,而不是它的引用。好的,谢谢,我错了;我几天前开始学习Perl。。。此时,您应该专注于第三方API,而不是深入研究第三方API。