# sort => 'spots',
# filter1 => {
# user_rej => {
-# by_zone => '4,5',
+# by_dxcc => 'W,VE',
# },
# reject => {
-# by_zone => [11, 'n', 4, 5],
+# by_dxcc => [6, 'n', 226,197],
# },
# user_acc => {
-# freq => 'hf',
+# freq => '0/30000',
# },
# accept => {
# freq => [0, 'r', 0, 30000],
#
# clear/spots 1 2
# accept/spots 1 freq 0/30000
-# reject/spots 1 by_zone 4,5
+# reject/spots 1 by_dxcc W,VE
# accept/spots 2 freq vhf
# accept/spots 2 by_zone 14,15,16
#
# no filter no implies filter 1
#
+# The field nos are the same as for the 'Old' filters
+#
# The user_* fields are there so that the structure can be listed easily
# in human readable form when required. They are not used in the filtering
# process itself.
($field, $fieldsort) = @$ref[0,1];
my $val = $_[$field];
if ($fieldsort eq 'n') {
- next L1 if grep {$_ == $val} @{$ref}[2..$#$ref];
+ next L1 if grep $_ == $val, @{$ref}[2..$#$ref];
} elsif ($fieldsort eq 'r') {
my $i;
for ($i = 2; $i < @$ref; $i += 2) {
next L1 if $val >= $ref->[$i] && $val <= $ref->[$i+1];
}
} elsif ($fieldsort eq 'a') {
- next L1 if grep { $val =~ m{$_}} @$ref[2..$#$ref];
+ next L1 if grep $val =~ m{$_}, @$ref[2..$#$ref];
}
}
}
($field, $fieldsort) = @$ref[0,1];
my $val = $_[$field];
if ($fieldsort eq 'n') {
- next L1 unless grep {$_ == $val} @{$ref}[2..$#$ref];
+ next L1 unless grep $_ == $val, @{$ref}[2..$#$ref];
} elsif ($fieldsort eq 'r') {
my $i;
for ($i = 2; $i < @$ref; $i += 2) {
next L1 unless $val >= $ref->[$i] && $val <= $ref->[$i+1];
}
} elsif ($fieldsort eq 'a') {
- next L1 unless grep { $val =~ m{$_}} @{$ref}[2..$#$ref];
+ next L1 unless grep $val =~ m{$_}, @{$ref}[2..$#$ref];
}
}
}
{
my $self = shift;
my $sort = $self->{sort};
- my $fn = $self->{name};
+ my $name = $self->{name};
my $dir = "$filterbasefn/$sort";
+ my $fn = "$dir/$name";
+
mkdir $dir, 0775 unless -e $dir;
- my $fh = new IO::File ">$dir/$fn" or return "$dir/$fn $!";
+ rename $fn, "$fn.o" if -e $fn;
+ $fh = new IO::File ">$fn";
if ($fh) {
my $dd = new Data::Dumper([ $self ]);
$dd->Indent(1);
$dd->Quotekeys($] < 5.005 ? 1 : 0);
$fh->print($dd->Dumpxs);
$fh->close;
+ } else {
+ rename "$fn.o", $fn if -e "$fn.o";
+ return "$fn $!";
}
return undef;
}