【问题标题】:Easiest way to grab "target" key from the hash shown [closed]从显示的哈希中获取“目标”键的最简单方法 [关闭]
【发布时间】:2021-02-05 01:55:33
【问题描述】:

这是有问题的 hashref 的 Dumper 的输出:

#!/usr/bin/perl

use Data::Dumper;

sub getUpgradeTaskUUIDS {
    my $derp = SF::Transaction::Update::getUpgradeTasks();
    print "Derp is:\n";
    print Dumper $derp;
    [... do stuff ...]
}

下面的 hashref 被另一个函数接收。 task_readiness 可能有元素,也可能没有。我设法以某种复杂的方式抓住了“目标”=> '_6f5c8c84-6251-11eb-8def-fd627969bf5f_52dcea68-60e9-11eb-830e-f71d7dc3a91f',但我想知道最干净、最简单的方法是什么?如果两者都有适用的元素,我还需要能够从 task_readiness 和 task_upgrade 中获取 target -> '' 值:

Derp is:
$VAR1 = {
          'tasks_readiness' => [],
          'tasks_upgrade' => [
                               {
                                 'type' => 6,
                                 'hidden' => 0,
                                 'state_name' => '1',
                                 'allow_html_in_msg' => 1,
                                 'aq_id' => '0e43ed66-663e-11eb-a97b-b72c0f665ee4',
                                 'subtype_name' => '',
                                 'retry_type' => 1,
                                 'safe_to_delete' => 1,
                                 'create_time' => 1612370227,
                                 'delay_run' => 1612370299,
                                 'last_state_change' => 1612370287,
                                 'description' => 'Apply Upgrade 7.0.0-1242 to Devices',
                                 'subtype' => 14,
                                 'group_name' => 'DEVICE_UPGRADE',
                                 'name' => '',
                                 'type_name' => '6',
                                 'retries' => 0,
                                 'state' => 1,
                                 'target' => '_6f5c8c84-6251-11eb-8def-fd627969bf5f_52dcea68-60e9-11eb-830e-f71d7dc3a91f',
                                 'domain' => 'e276abec-e0f2-11e3-8169-6d9ed49b625f',
                                 'cost' => 10,
                                 'pid' => 0,
                                 'message' => '<p><strong>Failed to update 2 devices.<br></strong></p><p><strong>Please reapply policies to your managed devices.</strong></p>',
                                 'user' => 'admin'
                               }
                             ]
        };

【问题讨论】:

  • “我设法以某种复杂的方式抓住了"target" =&gt; '_6f5c-...-a91f'。请edit您的帖子并包含“复杂方式”的代码。

标签: arrays perl hash-of-hashes


【解决方案1】:

获得所需价值的最简单方法可能是:

$derp->{tasks_upgrade}[0]{target}

如果数组中有其他条目,则增加该 0。

注意:感谢 Jim Garrison 指出我之前的愚蠢行为。

【讨论】:

  • 你的意思是$derp-&gt;{tasks_upgrade}-&gt;[$n]-&gt;{target}$n 的某个值吗?
猜你喜欢
  • 2011-11-17
  • 2011-02-22
  • 2021-04-08
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 2014-10-05
  • 2022-01-26
相关资源
最近更新 更多