$colors-2 = $colors
обе переменные указывают на один и тот же хэш (массив). Вместо этой строчки надо написать $colors-2 = merge({}, $colors)
, чтобы скопировать содержимое $colors
в $colors-2
, и тогда $colors-2
уже будет указывать на копию, а не на тот же самый хэш. Как-то так.