纯粹的学术问题,我没有在这里看到禁止它们的说明(虽然我没有找到'学术'标签).
如果我有如下所示的现有哈希,我可以采用它的切片(?),如下所示:
my %hash = (one=>1, two=>2, three=>3, four=>4);
my ($two, $four) = @hash{'two','four'};
Run Code Online (Sandbox Code Playgroud)
如果从这样的示例函数返回哈希,有没有办法做到这一点?
sub get_number_text
{
my %hash = (one=>1, two=>2, three=>3, four=>4);
return %hash;
}
Run Code Online (Sandbox Code Playgroud)
一种有效的方法是:
my ($two, $four) = @{ { get_number_text() } }{'two', 'four'};
Run Code Online (Sandbox Code Playgroud)
据我所知,函数返回一个散列键/值列表,内部{}创建一个匿名散列/ ref,而@ {}使用引用将其"强制转换"为一个列表,即一个哈希切片,因为Perl知道参考哈希.(我对最后一点工作有点惊讶,但对Perl有更多的权力,等等)
但这是在一个表达式中写出那个公认的奇怪访问的最明确方式吗?
perl ×1