I believe the important thing to understand (and this may not be a precise definition), is that the context in which you use a scalar determines how it is manipulated.
That's why there are, for example, different operators == !=for numbers, eq ne for strings.
You can read more on this in perldata, under 'scalars'.