| #!/usr/bin/perl |
| |
| # merges the scores found in score-setN into a single scores file |
| # |
| # if called with a score set parameter N, only rules that appear in |
| # that score-setN file will be used (score lines for rules only found |
| # in other score-set files will be ignored) |
| # |
| # <@LICENSE> |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to you under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at: |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # </@LICENSE> |
| |
| use strict; |
| use warnings; |
| |
| my %rules; |
| |
| my $active_rule_set; |
| $active_rule_set = $ARGV[0] if (defined $ARGV[0] && $ARGV[0] =~ /^[0-3]$/); |
| |
| if (defined $active_rule_set) { |
| open (SCORES, "scores-set$active_rule_set") or die "Cannot open scores-set$active_rule_set: $!"; |
| while(<SCORES>) { |
| next unless /^score (\S+)\s+(-?[\d.]+)\b/; |
| @{$rules{$1}} = ('0.001', '0.001' ,'0.001', '0.001'); |
| $rules{$1}[$active_rule_set] = $2; |
| } |
| close SCORES; |
| } |
| |
| for (my $i = 0; $i < 4; $i++) { |
| next if (defined $active_rule_set && $i == $active_rule_set); |
| open (SCORES, "scores-set$i") or die "Cannot open scores-set$i: $!"; |
| while(<SCORES>) { |
| next unless /^score (\S+)\s+(-?[\d.]+)\b/; |
| next if (defined $active_rule_set && !exists $rules{$1}); |
| @{$rules{$1}} = ('0.001', '0.001' ,'0.001', '0.001') unless exists $rules{$1}; |
| $rules{$1}[$i] = $2; |
| } |
| close SCORES; |
| } |
| |
| open (SCORES, ">scores") or die "Cannot open scores: $!"; |
| foreach my $rule (sort(keys %rules)) { |
| my $line = "score $rule "; |
| for (my $i = 0; $i < 37 - length $rule; $i++) { |
| $line .= ' '; |
| } |
| $line .= join(' ', @{$rules{$rule}})."\n"; |
| print SCORES $line; |
| } |
| close SCORES; |