遍历哈希中的哈希数组

时间:2018-08-25 23:11:01

标签: arrays perl hash

我有以下代码使用对哈希的引用:

sub readAll {
   my ( $main, $dbh ) = @_;

   my @SessSeq = ();
   my $sql;
   my $rec = 0;
   $sql  = "SELECT * FROM sys_table ";
   my $sth = PrepAndExecuteQuery( $dbh, $sql );
   while ( my $result = $sth->fetchrow_hashref() ){
      push @SessSeq, $result;
      $rec++;
   }
   $$main{_SessSeq} = \@SessSeq;
}

以上代码有效。我在主哈希中得到了一个哈希数组 由于缺乏知识,我正在努力检索数据。 这似乎不起作用:

foreach my $ses ( @($$main{_SessSeq}) ){
    print STDERR Dumper $ses;
}

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

假设您的foreach my $ses循环位于readAll子例程的内部 ,那么您要做的唯一事情就是使用括号( ... )而不是括号{ {1}}在取消引用

{ ... }用现代术语写成$$main{_SessSeq}会好得多,但两者都具有相同的含义:哈希数组的引用以及每个哈希中数据库表行的数据

正确的循环如下所示

$main->{_SessSeq}

但是与仅仅写作相比并没有真正的优势

for my $ses ( @{ $main->{_SessSeq} } ) {
    print STDERR Dumper $ses;
}

您没有说什么 这似乎不可行 可能是什么意思,但是print STDERR Dumper $main->{_SessSeq} 每次都会在表行周围输出表行的内容。循环

如果您需要任何进一步的帮助,则必须正确地描述问题,显示所获得的输出并仔细描述期望的结果