#!/usr/pkg/bin/perl use strict; my %AGE; my $max = 0; my $min = 99; my ($max_call,$min_call); my $sum = 0; my $total; while (<>) { if ( #QSO: \d+ \w+ [\d-]+ \d+ [A-Z0-9/]+ \d+ \d+ [A-Z0-9/]+ \d+ \d+ m|QSO:\s+\d+\s+\w+\s+[\d-]+\s+\d+\s+[A-Z0-9/]+\s+\d+\s+\d+\s+([A-Z0-9/]+)\s+\d+ (\d+)| ) { my $teen; if ($2 == 1) { next;} # skip if wrongly 1 if ($2 != 0 ) { if ($max < $2) { $max_call = $1; $max = $2} if ($min > $2) { $min_call = $1; $min = $2} $sum+= $2; $teen = int ($2/10); } $AGE{$teen}++; $total++; } } printf " %5s %3s %4s\n", 'ties', 'count','%'; printf " %5s %3s %4s\n", '----', '-----','----'; foreach my $i ( sort keys %AGE ) { printf " %2d0's %3d %4.1f\n", $i, $AGE{$i}, 100*$AGE{$i}/$total # $total += $AGE{$i}; } printf " %5s %3s %4s\n", '----', '-----','----'; printf " Total %3d\n", $total; printf " Ave. %2.1f (excluding 00) \n", $sum/$total; printf " %10s %3d\n", $max_call, $max; printf " %10s %3d\n", $min_call, $min; __END__ QSO: 7028 CW 2010-06-19 0953 JA1XMS 599 59 N8OO 599 55