我是Perl中没有经验的程序员。我已经读过这本书开头Perl Curtis“Ovid”Poe并且对这段代码有疑问。
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
my @array = ( 3, 4, 1, 4, 7, 7, 4, 1, 3, 8 );
my %unordered;
@unordered{@array} = undef;
foreach my $key (keys %unordered) {
print “Unordered: $key\n”;
}
@unordered {@array} = undef;
这段代码是什么意思? 有人能解释一下吗?
答案 0 :(得分:4)
@unordered{@array} = undef
这称为hash slice
。您可以阅读更多about it here或here或here。换句话说,它作用于哈希的多个键(键由@array
描述,在这种特殊情况下,它为每个键分配值undef
。
答案 1 :(得分:1)
我假设它是为了向你展示关于哈希键的一些事情。
您拥有@array
,然后在哈希%unordered
中创建条目,其中数组中的值为键,没有值。这发生在这一行:
@unordered {@array} = undef;
然后,遍历该哈希的所有键并打印它们。因此,您可以看到它们具有哪些键以及它们在哈希中的顺序。 您可能会注意到每个键只存在一次,尽管数组中有多个值不止一次。这是因为哈希的键始终是唯一的。 此外,您可以看到键的顺序没有特定的顺序,因为哈希的键可以按照实现的任何方式进行排序。
答案 2 :(得分:0)
是的,我理解你向我解释的所有内容。 Tkank你的时间。
但是为什么,首先我们用数字启动一个数组,然后创建一个哈希(空白哈希),然后我们用哈希值创建条目,无序,数组中的值为键,没有值。
通过in循环,我们使用"%" (%无序)。我们更改数组" @ array"哈希"%无序",然后我们使用in循环再次%无序。
看起来有点奇怪