#!/usr/sph/bin/perl sub convert { my ( $line, $one, $two ) = @_; # e.g.: # 49:02:24N -> 49+02/60+24/3600 # 49:02:24S -> -(49+02/60+24/3600) if ($line =~ /$one/) { $line =~ s/$one//s; $type="1"; } else { $line =~ s/$two//s; $type="2"; } (my $deg,my $min,my $sec) = split(/:/,$line,3); $deg = int $deg; $min = int $min; $sec = int $sec; if ($sec) { $tmp= ($deg + $min/60. + $sec/3600.); } elsif ($min) { $tmp= ($deg + $min/60.); } else { $tmp= $deg; } if ($type == "2") { $tmp= (- $tmp); } return $tmp; } $line = "49:32:23N"; $tmpo=&convert($line,"N","S"); print "$tmpo\n"; $line = "49:02:24N"; &convert($line,"N","S"); print "$tmp\n"; $line = "49N"; &convert($line,"N","S"); print "$tmp\n"; $line = "49:60N"; &convert($line,"N","S"); print "$tmp\n"; $line = "49:02:24S"; &convert($line,"N","S"); print "$tmp\n";