Perl:过滤 AoH 输出
Perl: Filter AoH output
我正在尝试整理我的 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 中的键过滤我的输出,例如只打印出那些 'Organization' => 'Finance'
.
我尝试使用新数组来解决它:
my @SortedAoH = sort { {Organization=>{'Finance'}} } @AoH;
但是不行。
你想要的是grep
,而不是sort
。你也得到了等价检查的基本语法错误。
无论如何,过滤器是:
my @finance_orgs = grep { $_->{'Organization'} eq 'Finance' } @AoH;
@finance_orgs
变量现在将仅包含 Organization
设置为 Finance
的变量。
只是对作品的解释:
$_
变量是在块中隐含值时被赋值的变量,例如在 grep
或 map
或 for
循环中没有明确命名的变量。
$_->{'Organization'}
在遍历数组中的每个条目时对哈希执行哈希查找。
eq
是用于测试字符串等价性的运算符(与测试数字等价性的 ==
相反)。
我正在尝试整理我的 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 中的键过滤我的输出,例如只打印出那些 'Organization' => 'Finance'
.
我尝试使用新数组来解决它:
my @SortedAoH = sort { {Organization=>{'Finance'}} } @AoH;
但是不行。
你想要的是grep
,而不是sort
。你也得到了等价检查的基本语法错误。
无论如何,过滤器是:
my @finance_orgs = grep { $_->{'Organization'} eq 'Finance' } @AoH;
@finance_orgs
变量现在将仅包含 Organization
设置为 Finance
的变量。
只是对作品的解释:
$_
变量是在块中隐含值时被赋值的变量,例如在grep
或map
或for
循环中没有明确命名的变量。$_->{'Organization'}
在遍历数组中的每个条目时对哈希执行哈希查找。eq
是用于测试字符串等价性的运算符(与测试数字等价性的==
相反)。