下面是一段Perl代码。我想循环使用不同正则表达式($myo
)和不同运算符($op
)的几个查询,并将结果保存到数组数组而不是一个大@result
数组。
即,MYO[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;
}
}
答案 0 :(得分:5)
使用fetchall_arrayref
方法代替fetchrow_array
方法。
所以只需替换这一行:
push @results, $sth->fetchrow_array;
这一行:
push @results, $sth->fetchall_arrayref;
Here is the documentation for all the DBI statement handler methods.
答案 1 :(得分: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;
}
答案 2 :(得分:0)
您可以使用数组引用:
my $ref;
for my $i (1..10) {
for my $j (1..10) {
push @{$ref->[$i]}, $j;
}
}
那就行了。
编辑:这将创建对10x10矩阵的引用。