I might suggest you make your coordinate transform to UTM then make your distance calculations or next transform. The Geo::Coordinates::UTM module is bidirectional and supports many different Ellipsoids for the Lat/Long. I suggest using the WGS84 ellipsoid since that is the standard for GPS. The precision of these calculations is to the centimeter if not better, assuming that the earth is not a pulsating ellipsoid, which it really is. The one drawback is that the UTM system divides the planet into zones. Calculations across zone bounderys may not be as precise.
We (
Center for Coastal and Ocean Mapping) do a lot of this, but in the metric system. We need that flat model to do measurement calculations.