Not ok cases N65, N25 N65, N25 too many lats or lons Err: 1 65P, E25 65P, E25 too many lats or lons Err: 1 91, 47 91, 47 numbers are too big LAT: 91 LON: 47 65P, W25 65P, W25 mixed languages Err: 1 100 E, 91 N N91 ,E100 numbers are too big LAT: 91 LON: 100 47.9805, -186.5586 47.9805, -186.5586 numbers are too big LAT: 47.9805 LON: -186.5586 ##```## 1: 74 if((\$ENG >0) && (\$FIN > 0)) { 75 print "mixed languages\n"; 76 \$err++ 77 } 2: 78 elsif ((\$FIN>0) && ( (\$H{I}+\$H{L})>1 || (\$H{E}+\$H{P})>1 )) { 79 print "too many lats or lons\n"; 80 \$err++ 81 } 3: 82 elsif ((\$ENG>0) && ( (\$H{N}+\$H{S})>1 || (\$H{W}+\$H{E})>1 )) { 83 print "too many lats or lons\n"; 84 \$err++ 85 } 4: 86 elsif (\$H{E}>1) { 87 print "too many E\n"; 88 \$err++ 89 } 5: 90 elsif (\$H{I}>1) { 91 print "too many I\n"; 92 \$err++ 93 } 6: 94 elsif (\$H{L}>1) { 95 print "too many L\n"; 96 \$err++ 97 } 7: 98 elsif (\$H{P}>1) { 99 print "too many P\n"; 100 \$err++ 101 } 8: 102 elsif (\$H{W}>1) { 103 print "too many W\n"; 104 \$err++ 105 } 9: 106 elsif (\$H{S}>1) { 107 print "too many S\n"; 108 \$err++ 109 } 10: 110 elsif (\$H{N}>1) { 111 print "too many N\n"; 112 \$err++ 113 } ... 11: 133 elsif (\$comma_count > 3) { 134 print "too many commas\n"; 135 \$err++ 136 } 12: 137 elsif (\$dot_count > 2) { 138 print "too many dots\n"; 139 \$err++; 140 } ... 13: 169 if (\$coords =~ /^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?),\s*[-+]?(180(\.0+)?|((1[0-7]\d)|([1-9]?\d))(\.\d+)? 169 )\$/) { 170 print "all ok\n"; 171 } else { 172 print "too big numbers\n"; 173 } ##``````## elsif ( my @keys = grep \$H{ \$_ } > 1, keys %H ) { for ( @keys ) { print "too many \$_\n"; \$err++ } } ##``````## 30 my %H; ... 61 \$H{E} = (\$_ =~ tr/E//); 62 63 \$H{I} = (\$_ =~ tr/I//); 64 \$H{P} = (\$_ =~ tr/P//); 65 \$H{L} = (\$_ =~ tr/L//); 66 67 \$H{W} = (\$_ =~ tr/W//); 68 \$H{N} = (\$_ =~ tr/N//); 69 \$H{S} = (\$_ =~ tr/S//); ##``````## my %H = ( E => tr/E//, I => tr/I//, P => tr/P//, L => tr/L//, W => tr/W//, N => tr/N//, S => tr/S//, ); ##``````## 7 \$in =~ s/[NWSEIPL]//g; \$in =~ tr/NWSEIPL//d; 39 s/[^0-9NWSEIPL,.+-]/ /g; tr/0-9NWSEIPL,.+-/ /c; 122 s/ /./g; tr/ /./; 126 s/,/./g; tr/,/./; 148 s/[NE]//g; tr/NE//d; 156 s/[IP]//g; tr/IP//d; ```