X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FSpot.pm;h=b5b75e3883fcbb9825ffd788eaea94502dd77eae;hb=0e49d2c191786b825674e0cca106eef004c99899;hp=cb91c18aead934482da1878bb292e7b1ad6672e6;hpb=f443f102c592af25cd3468b637324ff78cc58300;p=spider.git diff --git a/perl/Spot.pm b/perl/Spot.pm index cb91c18a..b5b75e38 100644 --- a/perl/Spot.pm +++ b/perl/Spot.pm @@ -95,20 +95,20 @@ sub prefix return $fp->{prefix}; } -# add a spot to the data file (call as Spot::add) -sub add +# fix up the full spot data from the basic spot data +sub prepare { - my @spot = @_; # $freq, $call, $t, $comment, $spotter = @_ - my @out = @spot[0..4]; # just up to the spotter + # $freq, $call, $t, $comment, $spotter = @_ + my @out = @_[0..4]; # just up to the spotter # normalise frequency - $spot[0] = sprintf "%.f", $spot[0]; + $_[0] = sprintf "%.f", $_[0]; # remove ssids if present on spotter $out[4] =~ s/-\d+$//o; # remove leading and trailing spaces - $spot[3] = unpad($spot[3]); + $_[3] = unpad($_[3]); # add the 'dxcc' country on the end for both spotted and spotter, then the cluster call my @dxcc = Prefix::extract($out[1]); @@ -121,17 +121,16 @@ sub add my $spotter_itu = (@dxcc > 0 ) ? $dxcc[1]->itu() : 0; my $spotter_cq = (@dxcc > 0 ) ? $dxcc[1]->cq() : 0; push @out, $spotter_dxcc; - push @out, $spot[5]; - - my $buf = join("\^", @out); - - # compare dates to see whether need to open another save file (remember, redefining $fp - # automagically closes the output file (if any)). - $fp->writeunix($out[2], $buf); - + push @out, $_[5]; return (@out, $spotted_itu, $spotted_cq, $spotter_itu, $spotter_cq); } +sub add +{ + my $buf = join("\^", @_[0..7]); + $fp->writeunix($_[2], $buf); +} + # search the spot database for records based on the field no and an expression # this returns a set of references to the spots # @@ -230,6 +229,7 @@ sub ftor my ($a, $b) = @_; return undef unless $a < $b; $b--; + my $d = $b - $a; my @a = split //, $a; my @b = split //, $b; my $out; @@ -239,7 +239,9 @@ sub ftor while (@b) { my $aa = shift @a; my $bb = shift @b; - if ($aa eq $bb) { + if (@b < (length $d) - 1) { + $out .= '\\d'; + } elsif ($aa eq $bb) { $out .= $aa; } elsif ($aa < $bb) { $out .= "[$aa-$bb]";