#!/usr/pkg/bin/perl use strict; # $Id: cbr-to-zone,v 1.1 2009/10/28 00:32:07 makoto Exp $ # input cbr format from standard input # and display zone x freq matrix my %FREQ; my %CHECK; my @ZONE = qw(01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40); while (<>) { if (/^QSO:/ ) { my ($qso, $freq, $mode, $date, $gmt, $op, $rst, $tw, $call, $recv, $zone) = split; $freq = int($freq/1000); if ($freq == 1 ) { $freq = 1.8;} if ($freq == 3 ) { $freq = 3.5;} $FREQ{$freq}++; $CHECK{$freq,$zone}++; } } printf "%2s ", ' '; foreach my $high ( 0 .. 3) { printf "%d ", $high;} print "4\n"; printf "%4s ", ' '; foreach my $high ( 0 .. 3) { foreach my $low ( 1 .. 9, 0) { printf "%d ", $low;} } print "\n"; my $zone_total; foreach my $freq ( sort { $a <=> $b } keys %FREQ) { my $band_total = 0; printf "%4s ", $freq; foreach my $zone ( @ZONE) { if ($CHECK{$freq,$zone}) { printf("%s ", 'x'); $band_total++;} else { printf("%s ", ' ');} } printf " %2d\n", $band_total; $zone_total += $band_total; } printf "%88d\n", $zone_total;