# start doing the actual comparison
my $result;
- foreach my $key ('a'..'f') {
+ foreach my $key ('a'..'f', 'i'..'m') {
if (defined($holding_1->field_values($key))) {
if (!defined($holding_2->field_values($key))) {
return 1; # more details equals 'greater' (?)
} else {
- $result = $holding_1->field_values($key)->[0] <=> $holding_2->field_values($key)->[0];
+ my $holding_1_value = $holding_1->field_values($key)->[0];
+ my $holding_1_unsure = ($holding_1_value =~ s/\[|\]//g);
+ my $holding_2_value = $holding_2->field_values($key)->[0];
+ my $holding_2_unsure = ($holding_2_value =~ s/\[|\]//g);
+ $result = $holding_1_value <=> $holding_2_value;
+ if (!$result) { # they are 'equal' but we will sort 'maybe' values before 'sure' values (TODO: rethink this is it complicates some algorithms)
+ $result = $holding_2_unsure <=> $holding_1_unsure;
+ }
}
} elsif (defined($holding_2->field_values($key))) {
return -1; # more details equals 'greater' (?)