Perl обработка массива

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Ответить
nojoke
Сообщения: 2
Зарегистрирован: 26 авг 2009, 14:16

При обработке входного массива при 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;
}
umnix
Сообщения: 1
Зарегистрирован: 13 ноя 2009, 17:50

потому что в массив сохраняется ссылка на хеш, а потом ты этот же хеш модифицируешь
Ответить