1

下面是一段 Perl 代码。我想循环使用不同的正则表达式 ( $myo) 和不同的运算符 ( $op) 的几个查询,并将结果保存到一个数组数组而不是一个大@result数组。

即,结果数组 forMYO[0-9]*$将是每个运算符$results[0][0], $results[0][1]... 和MYO[0-9]*R$, $results[1][0],的数组$results[1][1]

有任何想法吗?

my @tech_ops =  ("AR","DB","GM","LW","MM","SA");
  my @results;

    for my $myo (qw(MYO[0-9]*$ MYO[0-9]*R$ MYO[0-9]*T$ MYO[0-9]*U$)) {
      foreach $op (@tech_ops)
        {
           $sth->execute($myo, $date_stop, $date_start,$op) 
         or die "Couldn't execute query for $myo: " . $sth->errstr;
           push @results, $sth->fetchrow_array;
         }
    }
4

3 回答 3

5

使用fetchall_arrayref方法而不是fetchrow_array方法。

所以只需替换这一行:

push @results, $sth->fetchrow_array;

有了这条线:

push @results, $sth->fetchall_arrayref;

这是所有 DBI 语句处理程序方法的文档。

于 2013-01-18T17:10:11.650 回答
4
my @tech_ops =  ("AR","DB","GM","LW","MM","SA");
my @results;

for my $myo (qw(MYO[0-9]*$ MYO[0-9]*R$ MYO[0-9]*T$ MYO[0-9]*U$)) {
    my @myo_results;
    foreach $op (@tech_ops) {
        $sth->execute($myo, $date_stop, $date_start,$op) 
            or die "Couldn't execute query for $myo: " . $sth->errstr;
        push @myo_results, $sth->fetchrow_array;
    }
    push @results, \@myo_results;
}
于 2013-01-18T17:21:53.630 回答
0

您可以只使用数组引用:

my $ref;
for my $i (1..10) {
   for my $j (1..10) {
        push @{$ref->[$i]}, $j;
    }
}

这样就可以了。

编辑:这将创建对 10x10 矩阵的引用。

于 2013-01-18T17:17:47.487 回答