Paul Brannan wrote:

>When I write:
>  a = 1
>or
>  def a; return 1; end
>
>I can access the variable or method the same:
>  puts a
>

Sorry but this is not so. Given the following code..

a = 1

def a
        return 2
end

p a
p a()

The output is 1 and 2. For this code...

A = 1

def A
        return 2
end

p A
p A()

The output is also 1 and 2.

The variable and the method are defined seperately regardless of case. 
It was just in your example of..

a=1
def a
    return 1
end

that meant you could not tell the difference between the output of a and 
a().

Tested on ruby 1.6.4 (2001-06-04) [i386-linux-gnu]