如何才能在Perl中获得哈希的唯一部分?

有没有办法获得一个子哈希?我需要使用散列片?

例如:

%hash = ( a => 1,b => 2,c => 3 );

我只想要

%hash = ( a => 1,b => 2 );

解决方法

Hash slices返回与一个键列表关联的值。要获取散列片,您将sigil更改为@并提供一个键列表(在本例中为“a”和“b”):
my @items = @hash{"a","b"};

通常您可以使用引号字操作符来生成列表:

my @items = @hash{qw/a b/};

你也可以分配一个散列片,所以如果你想要一个包含另一个哈希的子集的新哈希,你可以说

my %new_hash;
@new_hash{qw/a b/} = @hash{qw/a b/};

许多人会使用map而不是哈希片:

my %new_hash = map { $_ => $hash{$_} } qw/a b/;

从Perl 5.20.0开始,如果您使用%sigil而不是@ sigil,您可以一步获取键和值:

my %new_hash = %hash{qw/a b/};

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...