使用Perl获取哈希数组的第一个值

时间:2015-02-04 16:44:50

标签: arrays perl hash

我有一个执行SQL查询的子例程,并返回结果作为哈希数组的引用。

my $value = query("SELECT value from table WHERE foo=bar LIMIT 1");

如何从唯一的哈希中提取第一个值,而不必知道元素的键?

1 个答案:

答案 0 :(得分:6)

如果你知道密钥,那就是

query("...")->[0]{$key}

但你不知道密钥,所以我们必须抓住它。问题是哈希的元素没有排序。你可以抓住一把钥匙,但是没有第一把钥匙。但看起来你在哈希中只有一个元素,所以下面的方法就可以了:

my ($val) = values(%{ query("...")->[0] });
  -or-
my $val = ( values(%{ query("...")->[0] }) )[0];
  -or-
my $val = ( %{ query("...")->[0] } )[1];

这只是解决症状。你的问题源于你正在使用另一个愚蠢的DBI包装器 [1] 。没有你的包装你可以简单地做

my ($val) = $dbh->selectrow_array("...");

  1. 为什么每个人都坚持写包装,这使得访问数据库变得更加困难?如果你想提前进行数据库访问,不要创建一个简单执行SQL语句的接口--DBI已经做得很好 - 创建一个执行特定任务的接口(例如get_x_for_y($dbh, $y))。