我有一个执行SQL查询的子例程,并返回结果作为哈希数组的引用。
my $value = query("SELECT value from table WHERE foo=bar LIMIT 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("...");
get_x_for_y($dbh, $y)
)。