我有一个执行SQL查询的子例程,并返回结果作为哈希数组的引用.
my $value = query("SELECT value from table WHERE foo=bar LIMIT 1");
Run Code Online (Sandbox Code Playgroud)
如何从唯一的哈希中提取第一个值,而不必知道元素的键?
如果你知道钥匙,那就是
query("...")->[0]{$key}
Run Code Online (Sandbox Code Playgroud)
但你不知道关键,所以我们必须抓住它.问题是哈希的元素没有排序.你可以拿一把钥匙,但没有第一把钥匙.但看起来你在哈希中只有一个元素,所以下面的方法就是这样:
my ($val) = values(%{ query("...")->[0] });
-or-
my $val = ( values(%{ query("...")->[0] }) )[0];
-or-
my $val = ( %{ query("...")->[0] } )[1];
Run Code Online (Sandbox Code Playgroud)
这只是解决症状.你的问题源于你正在使用另一个愚蠢的DBI包装器[1].没有你的包装,你可以做到
my ($val) = $dbh->selectrow_array("...");
Run Code Online (Sandbox Code Playgroud)
get_x_for_y($dbh, $y)).