#my %num2call = do '070-members-20100523.inc'; my %num2call = do '070-members-20110525.inc'; { version => '04', contest_name => 'Three Day Weekend', contest_id => 'TDW', filter => { mode => \"IN ('PSK31', 'BPSK', 'BPSK31', 'QPSK31')", band => \"IN('160M','80M','40M','20M','15M','10M','6M')", }, defaults => { log_cols => [qw/ call qso_date time_on band srx /], placeholders => [qw/ 070-Number Email Category SOAPBOX /], scoreboard_cols => [qw/ 070-number category /], dropbox_options => { Category => [ 'North America', 'Central America', 'South America', 'Europe', 'Oceania', 'Asia', 'Africa', 'Club Station', 'SWL', 'Bonus Station', ], }, update => sub { my $row = shift; my %h; $h{call} = $row->{call}; $h{call} =~ s#^[A-Z]+\d*/##; # strip portable from front, e.g. W3/ $h{call} =~ s#/\d+$##; # strip portable from back, e.g. /7 if( $row->{srx} =~ /\D/ ){ my $srx = $row->{srx}; $srx =~ s/Ø/0/g; $srx =~ s/\b070\b//g; # so '070' club name doesn't false-positive as the 070#. $h{srx} = $1 if $srx =~ /(\d+)/; } # $h{srx} = $1 if $row->{srx} =~ /\D/ && $row->{srx} =~ /(\d+)/; $h{srx} = sprintf '%04d', $h{srx} || $row->{srx} || 0; if( $h{srx} !~ /[1-9]/ ){ $h{contest_use} = "No 070#"; }elsif( $h{call} ne $num2call{ $h{srx} } ){ $h{contest_use} = "Call/070# do not match" } return \%h; }, Qs => [ { label => "ERRORS", weight => 0, group_by => 'call,qso_date,time_on,band,srx, contest_use', where => { contest_use => {'!='=>1} } }, { weight => 1, group_by => 'call, band', where => { # srx =>{'!=','0000'}, contest_use => 1, }, }, # { label => "Non-club members", weight => 0, group_by => 'call, band', where => { srx =>'0000' } }, ], mults => [ { label => '070 #s', group_by => 'srx', where => { # srx =>{'!=','0000'}, contest_use => 1, }, }, # { weight=> 0, label => '070 #s', group_by => 'call' }, # { weight=> 0, label => '070 #s', group_by => 'srx,call' }, ], contest_url => 'http://www.podxs070.com/three-day-weekend', contest_logo => 'http://www.podxs070.com/images/stories/psk31_dog.png', }, years => { 2009 => { closed => 1, sample => '8eaeee62ee7e9058e4be9f8d435163c7', filter => { qso_date => { -between => [20090529, 20090531] }, }, bonus => [ { weight => 100, label => 'Bonus Stations', group_by => 'call, band', where => { call => [qw/ G7DGX AE5PW W6QE WB4MNK /] } }, ], }, 2010 => { closed => 1, sample => 'c6099c8e0a434226fe9d7e62e0f308b0', filter => { qso_date => { -between => [20100528, 20100530] }, }, bonus => [ { weight => 100, label => 'Bonus Stations', group_by => 'call, band', where => { call => [qw/ N2EOC G7OGX N0NM N7QU /] } }, ], }, 2011 => { sample => 'a072c61a1c96537f76cc3101e37fb264', filter => { qso_date => { -between => [20110527, 20110529] }, }, bonus => [ { weight => 100, label => 'Bonus Stations', group_by => 'call, band', where => { call => [qw/ K1GMD W6QE WB4MNK G7OGX /] } }, ], }, }, }