При обработке входного массива при push(@way, \%waypoint_cur); массив @way полностью забивается последними сохраненными данными, то есть весь массив получается с одинаковыми значениями.
Подскажите пожалуйста что здесь не так.
sub common_kml_generate_points
{
my (@points)=(@_);
my %waypoint_cur;
my %waypoint_prev;
$waypoint_cur {DEVICE_LAT} =0;
$waypoint_cur {DEVICE_LON} =0;
$waypoint_prev {DEVICE_LAT} =0;
$waypoint_prev {DEVICE_LON} =0;
my @way=();
my @stops=();
foreach $point(@points)
{
$waypoint_cur{DEVICE_LAT} = $point->[1];
$waypoint_cur{DEVICE_LON} = $point->[0];
if (
($waypoint_cur{DEVICE_LAT} ne $waypoint_prev{DEVICE_LAT})
&&
($waypoint_cur{DEVICE_LON} ne $waypoint_prev{DEVICE_LON})
)
{ push(@way, \%waypoint_cur); }
$waypoint_prev{DEVICE_LAT} = $waypoint_cur{DEVICE_LAT};
$waypoint_prev{DEVICE_LON} = $waypoint_cur{DEVICE_LON};
}
return @way;
}
Perl обработка массива
потому что в массив сохраняется ссылка на хеш, а потом ты этот же хеш модифицируешь