I'm a little confused by this message...

ruby --version;ruby -we 'A=1;B=2;C=3;D=A -(B-C);p D'
ruby 1.9.0 (2004-07-14) [i686-linux]
-e:1: warning: ambiguous first argument; put parentheses or even spaces
-e:1: undefined method `A' for main:Object (NoMethodError)

ruby1.8 --version;ruby1.8 -we 'A=1;B=2;C=3;D=A -(B-C);p D'
ruby 1.8.1 (2004-02-03) [i386-linux]
-e:1: warning: ambiguous first argument; put parentheses or even spaces
-e:1: undefined method `A' for main:Object (NoMethodError)

It goes away if you make some whitespace tweaks....

ruby1.8 --version;ruby1.8 -we 'A=1;B=2;C=3;D=A-(B-C);p D'
ruby 1.8.1 (2004-02-03) [i386-linux]
2

ruby1.8 --version;ruby1.8 -we 'A=1;B=2;C=3;D=A - (B-C);p D'
ruby 1.8.1 (2004-02-03) [i386-linux]
2

Or decide not to use constants...
ruby1.8 --version;ruby1.8 -we 'a=1;b=2;c=3;d=a -(b-c);p d'
ruby 1.8.1 (2004-02-03) [i386-linux]
2

Even just one...
ruby1.8 --version;ruby1.8 -we 'a=1;B=2;C=3;D=a -(B-C);p D'
ruby 1.8.1 (2004-02-03) [i386-linux]
2



John Carter                             Phone : (64)(3) 358 6639
Tait Electronics                        Fax   : (64)(3) 359 4632
PO Box 1645 Christchurch                Email : john.carter / tait.co.nz
New Zealand

The universe is absolutely plastered with the dashed lines exactly one
space long.