In Ruby wird grundsätzlich per reference, nicht per value übergeben. Wenn du also aus irgendeinem Objekt (z.B. einem Array) ein anderes Objekt holst und dieses manipulierst, wirkt sich das auch auf den Inhalt des Arrays aus. Willst du auf einer Kopie des Strings im Array arbeiten, musst du das explizit sagen:
Mit dup wird eine Kopie des Textes angelegt.