Average elevation Track 1 = 72 Track 2 = 61 #### use Geo::Gpx; open $fh, "W20120129101405.gpx" ; my $gpx = Geo::Gpx->new( input => $fh ); my $tracks = $gpx->tracks(); print Dumper ($tracks); #### $VAR1 = = [ { 'name' => 'Track 1', 'segments' => [ { 'points' => [ { 'lat' => '54.5182217145253', 'ele' => '73.0', 'lon' => '-2.62191579018834' }, { 'lat' => '54.1507759448355', 'lon' => '-3.05774931478646' 'ele' => '71.0', }, { 'lat' => '54.6016296784874', 'lon' => '-3.40418920968631' 'ele' => '72.0', } ] }, { 'points' => [ { 'lat' => '54.6862790450185', 'lon' => '-3.68760108982739' 'ele' => '63.0', } ] } ] }, { 'name' => 'Track 2', 'segments' => [ { 'points' => [ { 'lat' => '54.9927807628549', 'lon' => '-4.04712811256436' 'ele' => '60.0', }, { 'lat' => '55.1148395198045', 'lon' => '-4.33623533555793' 'ele' => '61.0', }, { 'lat' => '54.6214174046189', 'lon' => '-4.26293674042878' 'ele' => '62.0', }, { 'lat' => '55.0540816059084', 'lon' => '-4.42261020671926' 'ele' => '59.0', }, { 'lat' => '55.4451622411372', 'lon' => '-4.32873765338' 'ele' => '63.0', } ] } ] } ];