Вот с чего я начинаю. Я читаю массивы из базы данных по одному, используя цикл while. Я хочу подобрать элементы из базы данных, которые являются дубликатами (в определенных полях). Я хочу сохранить только те элементы, которые уникальны в этих полях. Затем я хочу распечатать данные, которые я сохранил определенным образом. Я создал код, который, как я думал, сделает это, но он дает мне все, включая элементы, которые дублируются в поле. Я искал и искал, и я не могу понять это, я думаю, как perl noob, мне не хватает чего-то простого. Код выглядит следующим образом:
my @uniques = ();
my $output;
while (my @itemArray = $sth->fetchrow_array() ) {
my $duplicateFlag = 0;
foreach (@uniques){
if( ($itemArray[3] eq "$_->[3]") and ($itemArray[4] eq "$_->[4]")
and ($itemArray[5] eq "$_->[5]" ) and ($itemArray[6] eq "$_->[6]" )
and ($itemArray[7] eq "$_->[7]" ) and ($itemArray[8] == "$_->[8]" ) ){
$duplicateFlag = 1;
}
}
if( $duplicateflag == 0){
$refToAdd = \@itemArray;
push(@uniques, $refToAdd);
$output .= "$itemArray[3]" . "\t$itemArray[8]" . "\t$itemArray[5]" . "\t$itemArray[7]\n";
}
}
print $output
Data::Dumper::Dumper({uniques=>\@uniques,refToAdd=>$refToAdd})
сразу после назначения $refToAdd для строки, которая должна была рассматриваться как дубликат, но не была - person ysth   schedule 10.05.2011