在哈希

时间:2017-04-08 09:23:22

标签: perl

所以,这不起作用,我不明白为什么。我尝试过各种可能的变化。但没有任何作用。我已经准备好把电锯带到我的服务器上,但希望你可以阻止它:

sub getQuestMarkers {
  #database stuff
  ...
  my %package;
  while(my ($key, $lat, $lng) = $sth->fetchrow_array()) {
    $package{$key} = ($lat,$lng);
  }

  ...
  return %package;
}

my %markers = getQuestMarkers();
while(my( $key, $value) = each %markers) {
  print "$key: @value - $value[0] $value[1]\n";
}

1 个答案:

答案 0 :(得分:3)

使用方括号[ ]创建数组引用,而不是parens ( );

如上所述,您的代码会丢弃第一个值$lat。这样写它:

$package{$key} = [$lat,$lng];

您可以输出如下值:

my ($lat,$lng) = @{ $package{$key} };

在您的代码中,您可以通过取消引用来打印出这些值:

print "$key: " . $value->[0] . " " . $value->[1] . "\n";

查看perldoc perlreftut