首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Perl中的数组中获取哈希值?

如何从Perl中的数组中获取哈希值?
EN

Stack Overflow用户
提问于 2019-06-24 00:45:36
回答 2查看 0关注 0票数 0

我想在perl中编写一个小的“DBQuery”函数,所以我可以使用一行发送一个SQL语句并接收一个哈希数组,即一个记录集。但是,我遇到了Perl语法的问题(可能还有一些奇怪的指针/引用问题),这阻止了我从数据库中获取哈希的信息。下面的示例代码演示了该问题。

我可以使用以下语法从数组中的哈希中获取数据“Jim”:

代码语言:javascript
复制
print $records[$index]{'firstName'}

返回“吉姆”

但是如果我首先将数组中的哈希记录复制到它自己的哈希变量中,那么奇怪的是我无法再访问该哈希中的数据:

代码语言:javascript
复制

    %row = $records[$index];
    $row{'firstName'};

返回“”(空白)

以下是显示问题的完整示例代码。任何帮助表示赞赏:

代码语言:javascript
复制

my @records = (
   {'id' => 1, 'firstName' => 'Jim'},
   {'id' => 2, 'firstName' => 'Joe'}
);
my @records2 = ();

$numberOfRecords = scalar(@records);
print "number of records: " . $numberOfRecords . "\n";
for(my $index=0; $index < $numberOfRecords; $index++) {

   #works
   print 'you can print the records like this: ' . $records[$index]{'firstName'} . "\n";

   #does NOT work
   %row = $records[$index];
   print 'but not like this: ' . $row{'firstName'} . "\n";

} 
EN

Stack Overflow用户

发布于 2019-06-24 10:14:00

你在数组中实际拥有的是hashref,而不是hash。如果你不理解这个概念,它可能值得阅读perlref文档。

获取你需要做的哈希

代码语言:javascript
复制
my %hash = %{@records[$index]};

例如。

代码语言:javascript
复制
my @records = (
     {'id' => 1, 'firstName' => 'Jim'}, 
     {'id' => 2, 'firstName' => 'Joe'}
  );

  my %hash = %{$records[1]};

  print $hash{id}."\n";

虽然。我不确定你为什么要这样做,除非它用于学术目的。否则,我建议在DBI模块中使用fetchall_hashref / fetchall_arrayref,或者使用Class :: DBI之类的东西。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档