Непонимание назначения переменной (массива) в Ruby (с методом push)

Я обнаружил недостаток в моем понимании Ruby или теории программирования или того и другого. Посмотрите на этот код:

#!/usr/bin/ruby -w
@instance_ar = [1,2,3,4]
local_ar = @instance_ar
local_ar_2 = local_ar
###
irrelevant_local_ar = [5,6,7,8]
###
for i in irrelevant_local_ar
    local_ar_2.push(i)
end
count = 0
for i in local_ar_2
    puts "local_ar_2 value: #{i} and local_ar value: #{local_ar[count]} and @instance_ar value: #{@instance_ar[count]}\n"
    count += 1
end

Выход этого

local_ar_2 value: 1 and local_ar value: 1 and @instance_ar value: 1
local_ar_2 value: 2 and local_ar value: 2 and @instance_ar value: 2
local_ar_2 value: 3 and local_ar value: 3 and @instance_ar value: 3
local_ar_2 value: 4 and local_ar value: 4 and @instance_ar value: 4
local_ar_2 value: 5 and local_ar value: 5 and @instance_ar value: 5
local_ar_2 value: 6 and local_ar value: 6 and @instance_ar value: 6
local_ar_2 value: 7 and local_ar value: 7 and @instance_ar value: 7
local_ar_2 value: 8 and local_ar value: 8 and @instance_ar value: 8

Вопрос А: какpush вlocal_ar_2 изменить два других массива? Мое понимание локальных переменных было то, что после того, как они были созданы, они не должны влиять на любые другие переменные, будучи локальными.

Вопрос Б: Как я могу избежать подобных вещей? Исходя из C и Perl, это просто поражает меня.

Ответы на вопрос(2)

Ваш ответ на вопрос