在while循环中将值插入数组

时间:2016-05-05 09:46:01

标签: perl

我有一个有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";

如果我在循环中打印值得到正确答案,但是当我打印出循环的一侧时,我只从阵列中获取一条记录。

1 个答案:

答案 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;