I posted this in reply to a question about variable assignment on the ruby-lang mailing list:
> WHY is var line getting changed by operations on var base_name? Isn’t
> ‘base_name = line’ supposed to create a copy? ‘=’ in this case seems to
> be acting like an alias or something.One clear night a great zen master said, “A variable is like a finger,
pointing to the moon. The variable is not the moon; it is only a
sign, showing the way. Other fingers, of other masters, may point to
the moon as well; but they all point to one and the same moon.”
An acolyte asked the master, “But master, what if I want TWO moons?”.
The master stood silently for a moment, and then uttered the single
syllable “dup!” and struck the acolyte sharply on the back of the head
with his staff. The acolyte fell to the ground, and staring up, saw
that there were now two moons floating somewhat shakily in the sky.
At that moment, he was enlightened.