Perl在哈希中插入不需要的键

IMP*_*TOR 0 macos perl hash

我一直在使用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";
}
Run Code Online (Sandbox Code Playgroud)

对于某些脚本,我得到第一个输出(额外的键),有时我得到另一个(额外的值)

输出:

a
a
b
b
c
c
Run Code Online (Sandbox Code Playgroud)

要么

1
2
3
a
b
c
Run Code Online (Sandbox Code Playgroud)

这是Perl的"功能"吗?我如何解决它?

谢谢!

Jim*_*vis 6

你错过了keys从哈希中获取密钥的关键字.

for my $key (keys %hash) {
    print $key."\n";
}
Run Code Online (Sandbox Code Playgroud)

否则,哈希变为平坦的列表,并返回所有键和值.