我一直在使用Perl这个问题而且它真的很烦人。
平台:Mac OS X 10.7; Perl v5.12.3
示例脚本
#!/usr/bin/perl
undef %hash;
@letters = qw / a b c /;
@numbers = qw / 1 2 3 /;
for($i=0;$i<=2;$i++){
$hash{$letters[$i]}=$numbers[$i];
}
foreach $key (%hash) {
print $key."\n";
}
对于某些脚本,我得到第一个输出(额外的键),有时我得到另一个(额外的值)
输出:
a
a
b
b
c
c
或
1
2
3
a
b
c
这是Perl的“功能”吗?我该如何解决?
谢谢!
答案 0 :(得分:6)
您错过了keys
关键字以从哈希中获取密钥。
for my $key (keys %hash) {
print $key."\n";
}
否则,散列会变为列表,并返回所有键和值。
答案 1 :(得分:0)
建议使用“键”的答案是正确的,我只是想提醒你总是把 '使用严格;'和'使用警告;'在脚本的开头。