my $sth_m = $dbh->prepare("Select Serial_No,Fru_Desc,Status from master_table2 where Router_Name = ?") or die "Cannot prepare master_table for selecting rows based on router name:" .$dbh->errstr; my $sth_a = $dbh->prepare("Select Serial_No,Fru_Desc from active_table2 where Router_Name = ?") or die "Cannot prepare active_table selecting rows based on router name" .$dbh->errstr; foreach my $rtr(@routers) { $sth_m->execute($rtr); $sth_a->execute($rtr); while (my @row_master_db = $sth_m->fetchrow_array) { push(@db_rows,[@row_master_db]); } foreach $test1(@db_rows) { print @$test1; } print "\n"; while (my @row_active_db = $sth_a->fetchrow_array) { push(@live_rows,[@row_active_db]); } foreach $test2(@live_rows) { print @$test2; } print "\n"; ....... (here i have the code to compare each row from @db_rows to each and every row of @live_rows ....... }