X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FFilter.pm;h=00ee6adb15a0ef8be4f7ca43110e201aafb7d2e2;hb=c912e948dc2207f446c7c8930ab179b4bc3b98d7;hp=7884052990c64630dbcdbb355f1b5a150ccb5508;hpb=a91e80b479d48d5d9be339c7aa2ab8cf6621886f;p=spider.git diff --git a/perl/Filter.pm b/perl/Filter.pm index 78840529..00ee6adb 100644 --- a/perl/Filter.pm +++ b/perl/Filter.pm @@ -108,13 +108,13 @@ sub read_in # 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], @@ -136,12 +136,14 @@ sub read_in # # 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. @@ -166,14 +168,14 @@ sub it ($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]; } } } @@ -182,14 +184,14 @@ sub it ($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]; } } } @@ -217,10 +219,13 @@ sub write { 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); @@ -228,6 +233,9 @@ sub write $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; }