【发布时间】:2016-05-29 14:50:55
【问题描述】:
我有一个与 Perl 相关的问题,涉及复杂的数据结构。我在托管 Apache 的 Linux (Centos v5) 服务器上运行 5.8.8 版的 Perl。我正在询问一个 MS-SQL 数据库。我正在使用“DBI”Perl 模块。
我有一个 SQL 查询的结果表,编码为对哈希引用数组的引用。所以表中的每一行都是一个包含哈希引用的数组元素,使用 DBI 模块的“fetchrow_hashref”命令获得。每个哈希的键对应于列标题,值对应于该列标题下表格中的特定单元格。
我想做的是获取一个列数据数组。 DBI 文档中似乎描述了一些关于如何获取列数据的方法,但对我来说它们有点不透明,如果作为练习,一般来说知道如何通过哈希引用数组获取切片会很好了解 perl 引用/取消引用的工作原理。
所以,基本上,鉴于此:
my %datarow1 = {"firstname"=> "dave", "bar"=>"smith"};
my %datarow2 = {"firstname"=> "john", "bar"=>"doe"};
my %datarow3 = {"firstname"=> "kim", "bar"=>"kardashian"};
这样引用:
my @rows = (\%datarow1, \%datarow2, \%datarow3);
my $rowsref=\@rows;
我如何得到这个数组?:
("dave", "john", "kim")
我试过了:
my @columndata=@$rowsref->[0]{"firstname"}
但这只会让我获得列中的第一个单元格(即包含一个元素“dave”的数组)。 必须有一种优雅的方式在一行中执行此操作 - 如果你们中的 perl 专家可以帮助我,我将不胜感激。
谢谢
CJ
【问题讨论】:
-
perl5.8.8 已经很老了。您可能需要考虑更新它。 -
谢谢 - 我很想更新它,但这不是我的决定!