- 论坛徽章:
- 6
|
本帖最后由 stanley_tam 于 2014-08-20 20:50 编辑
哈希不行就换数组把{:3_193:}- #!perl
- use strict;
- use FileHandle;
- my $file1 = 'data1.txt';
- my $file2 = 'data2.txt';
- # load group data
- my @lines = FileHandle->new($file2, 'r')->getlines;
- chomp @lines;
- my %group_of = map {split /\s+/, $_, 2} @lines;
- # go through data1.txt
- my $data = +{};
- my $fh1 = FileHandle->new($file1, 'r');
- while (my $line = $fh1->getline) {
- chomp $line;
- my ($class, $name, $score) = split /\s+/, $line, 3;
- my $group = $group_of{$name};
- # index is score
- push @{ $data->{"$class-$group"}->[$score] }, $line;
- }
- $fh1->close;
- for my $key (keys %{$data}){
- my $aref = $data->{$key};
- my $last_score = undef;
- my %valid_index = ();
- for my $score (0 .. $#{$aref}){
- next if not $aref->[$score];
- if (defined $last_score and abs($score - $last_score) < 5) {
- ++$valid_index{$last_score};
- ++$valid_index{$score};
- }
- $last_score = $score;
- }
- for my $i (keys %valid_index){
- print "$_\n" for @{ $aref->[$i] };
- }
- }
- __END__
复制代码 |
|