我有一个有10条记录的数组,我需要读取每一行并将其存储到另一个数组。我尝试了下面的代码,但它没有按预期工作
请对此提出一些建议。
while (my @row = $processed_sql->fetchrow_array)
{
#print "sq_no: $row[0] hie_key:$row[1] today: $row[2] table_name: $row[3] batch_id: $row[4] table_count: $row[5] pre_count: $row[6]\n";
my $table_name = $row[3];
my $batch_id = $row[4];
my $table_count = $row[5];
my $pre_count=$row[6];
#my $nvalue;
#print "$table_name,$table_count\n";
if($table_count >= $pre_count)
{
@no_issue = ($row[3], $row[4], $row[5], $row[6]);
print "value is greater @no_issue\n";
}
else
{
print "jkdlkjfa\n";
}
}
print "@no_issue\n";
如果我在循环中打印值得到正确答案,但是当我打印出循环的一侧时,我只从阵列中获取一条记录。
答案 0 :(得分:1)
以下行会覆盖整个数组:
@no_issue = ($row[3], $row[4], $row[5], $row[6]);
如果您不想覆盖ti,但添加值,请使用push。
push @no_issue, [ @row[ 3 .. 6 ] ];
这将创建一个数组数组,因此您需要在打印时取消引用内部数组:
for my $line (@no_issue) {
print join(' ', @$line), "\n";
}
几乎相当于更多的succint
print map "@$_\n", @no_issue;