As I understand things:
Variables whose names have no leading sigil have local scope.
Instance variables are local scope for the particular instance of a
class within which they “live”.
A Ruby program’s “global” scope is actually the scope of an instance
Object (or, under certain circumstances, maybe it could be an instance
of something further down the class inheritance hierarchy . . . ?).
As such, it seems that within your program’s “global” scope (not truly
global, but close enough for government work in most cases), the
effective difference between variables named foo and @foo is nothing but
one character. Is there some technical difference that might have an
effect on the “behavior” of the code I write, as long as neither of
them is being exported to some other running code or enclosed in a more
restricted scope within my program?
: Someone actually flamed me for referring to the “behavior” of some
code, once upon a time – thus the scare quotes around behavior in this