X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXUtil.pm;h=4e442140b82e9394422492bc639f5d3fd6ed8903;hb=856cb98bb0f72ea86ea13c3e91d93aee7796fe9f;hp=512c30efcc0e35609c3d931f0c20bf172af517ef;hpb=c1540ccd7990ec4bd151604dd63583d19fe4d0f6;p=spider.git diff --git a/perl/DXUtil.pm b/perl/DXUtil.pm index 512c30ef..4e442140 100644 --- a/perl/DXUtil.pm +++ b/perl/DXUtil.pm @@ -15,16 +15,16 @@ use Data::Dumper; use strict; -use vars qw(@month %patmap @ISA @EXPORT); +use vars qw(@month %patmap $pi $d2r $r2d @ISA @EXPORT); require Exporter; @ISA = qw(Exporter); @EXPORT = qw(atime ztime cldate cldatetime slat slong yesno promptf parray parraypairs phex phash shellregex readfilestr writefilestr filecopy ptimelist - print_all_fields cltounix unpad is_callsign is_latlong + print_all_fields cltounix unpad is_callsign is_long_callsign is_latlong is_qra is_freq is_digits is_pctext is_pcflag insertitem deleteitem - is_prefix dd + is_prefix dd is_ipaddr $pi $d2r $r2d ); @@ -36,6 +36,11 @@ require Exporter; ']' => ']' ); +$pi = 3.141592653589; +$d2r = ($pi/180); +$r2d = (180/$pi); + + # a full time for logging and other purposes sub atime { @@ -376,7 +381,19 @@ sub is_callsign { return $_[0] =~ m!^(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+) # basic prefix (?:/(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+))? # / another one (possibly) - [A-Z]{1,3} # callsign letters + [A-Z]{1,4} # callsign letters + (?:/(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+))? # / another prefix possibly + (?:/[0-9A-Z]{1,2})? # /0-9A-Z+ possibly + (?:-\d{1,2})? # - nn possibly + $!x; +} + +# check that a field only has callsign characters in it but has more than the standard 3 callsign letters +sub is_long_callsign +{ + return $_[0] =~ m!^(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+) # basic prefix + (?:/(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+))? # / another one (possibly) + [A-Z]{1,5} # callsign letters (?:/(?:[A-Z]{1,2}\d+ | \d[A-Z]{1,2}\d+))? # / another prefix possibly (?:/[0-9A-Z]{1,2})? # /0-9A-Z+ possibly (?:-\d{1,2})? # - nn possibly @@ -427,6 +444,12 @@ sub is_latlong return $_[0] =~ /^\s*\d{1,2}\s+\d{1,2}\s*[NnSs]\s+1?\d{1,2}\s+\d{1,2}\s*[EeWw]\s*$/; } +# is it an ip address? +sub is_ipaddr +{ + return $_[0] =~ /^\d+\.\d+\.\d+\.\d+$/ || $_[0] =~ /^[0-9a-f:]+$/; +} + # insert an item into a list if it isn't already there returns 1 if there 0 if not sub insertitem {