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

Get the first value of an array of hash with Perl

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

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

如何在不知道元素键的情况下从唯一的哈希中提取第一个值?

如果你知道密钥,那就是

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

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

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

这都是治标不治本。您的问题源于您正在使用另一个愚蠢的 DBI-wrapper[1]。没有你的包装你可以简单地做

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

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