Arrays Perl:过滤AoH输出

Arrays Perl:过滤AoH输出,arrays,perl,hash,output,Arrays,Perl,Hash,Output,我正在尝试对我的AoH进行排序,如下所示: $VAR1 = [ { 'Name' => 'John', 'Lastname' => 'Derp', 'Organization' => 'Finance', 'OfficeNR' => '23', 'ID' => '145'

我正在尝试对我的AoH进行排序,如下所示:

$VAR1 = [
              {
                'Name' => 'John',
                'Lastname' => 'Derp',
                'Organization' => 'Finance',
                'OfficeNR' => '23',
                'ID' => '145'
              },
              {
                'Name' => 'Kate',
                'Lastname' => 'Herp',
                'Organization' => 'HR',
                'OfficeNR' => '78',
                'ID' => '35'
              },
              {
                'Name' => 'Jack',
                'Lastname' => 'Serp',
                'Organization' => 'Finance',
                'OfficeNR' => '23',
                'ID' => '98'
              }
       ];
我试图做的是使用AoH的键过滤我的输出,例如,只打印那些拥有
“组织”=>“财务”
的人

我已尝试使用新阵列解决此问题:

my @SortedAoH = sort { {Organization=>{'Finance'}} } @AoH;

但是它不起作用。

你想要的是
grep
,而不是
排序
。您也错误地理解了等价性检查的基本语法

无论如何,过滤器是:

my @finance_orgs = grep { $_->{'Organization'} eq 'Finance' } @AoH;
@finance\u orgs
变量现在只包括
组织
设置为
财务
的组织

只是对这些作品的解释:

  • $
    变量是在块中隐含值时分配的变量,例如在
    grep
    map
    中,或在
    for
    循环中,没有明确命名的变量
  • $\->{'Organization'}
    在哈希遍历数组中的每个条目时,对其执行哈希查找
  • eq
    是用于测试字符串等价性的运算符(与测试数字等价性的
    =
    相反)

    • 您想要的是
      grep
      ,而不是
      排序
      。您也错误地理解了等价性检查的基本语法

      无论如何,过滤器是:

      my @finance_orgs = grep { $_->{'Organization'} eq 'Finance' } @AoH;
      
      @finance\u orgs
      变量现在只包括
      组织
      设置为
      财务
      的组织

      只是对这些作品的解释:

      • $
        变量是在块中隐含值时分配的变量,例如在
        grep
        map
        中,或在
        for
        循环中,没有明确命名的变量
      • $\->{'Organization'}
        在哈希遍历数组中的每个条目时,对其执行哈希查找
      • eq
        是用于测试字符串等价性的运算符(与测试数字等价性的
        =
        相反)