#!/usr/pkg/bin/perl use strict; #open(DATA) || die "problem opening: $!\n"; ## mon day time callsign sent rcvd multi MHz mode pts ## 8 16 2133 JA2MYA 599TK 599GF GF 1.9 CW 1 my ($freq, $mode, $date, $time, $mycall, $rsts, $nr, $callsign, $rstr, $exchange); my ($yy,$mon, $dd, $time, $multi,$pts); my $dummy; my %MULTI; my %QSO; my $multicount; my $points = 0; my @LINES; while (<>) { if ( /^QSO: / ) { ($dummy, $freq, $mode, $date, $time, $mycall, $rsts, $nr, $callsign, $rstr, $exchange) = split; ($yy,$mon,$dd) = split '-', $date; # $time += 900; # $exchange =~ s/P$//; $freq /= 1000; if ( $MULTI{$exchange} == 0 && ! ( $exchange =~ /\?/ )) { $MULTI{$exchange}++; $multi = $exchange; $multicount++; } else {$multi = ''}; $pts = 0; if ($QSO{$callsign} == 0 && ! ( $exchange =~ /\?/ )) { $QSO{$callsign}++; if ( $callsign =~ /^J[A-S]/i || $callsign =~ /^7[J-N]/i || $callsign =~ /^8[JN]/i ) { $pts = 1;} else {$pts = 5;} } else { $pts = 0;} $points += $pts; my $line = sprintf(" %02d %02d %04d %-10s %3s%s %3d%2s %3s %3.1f CW %d\n", $mon, $dd, $time, $callsign, $rsts, $nr, $rstr, $exchange, $multi, $freq, $pts); push(@LINES, $line); } } summary(); my $score = $multicount * $points; my $qso = $#LINES + 1; ##printf ("%5d x %5d = %10d\n", $multicount, $points, $score); print "総得点 :", $score,"\n"; printf "%6s %6s %6s %6s\n", "freq", "qso", "point", "multi"; printf "%6s %6d %6d %6d\n", "1.8MHz", $qso, $points, $multicount; printf "\n"; printf("%03s %03s %04s %-10s%5s %5s %5s %3s %4s %s\n", qw(mon day time callsign sent rcvd multi MHz mode pts)); print @LINES; exit; ## ---- ここから上は、変更する必要はありません ---- ## (* *) の部分を消して記入して下さい- sub summary(){ print < JST 変換した cabrillo 形式を貼込んで下さい) __END__ 使い方(起動方法) perl /PATH/TO/kcj-160-head.sjis 2011-KCJ-160.LOG > 2011-KCJ-160.sendig