Or am I missing something very basic?
I think you might be conflating a stringified scalar reference with scalars in general. Scalars in Perl are single-value entities. A string is stored as a scalar. A reference is stored as a scalar. These bear no inherent relation to eachother, though. One can have [among other things] (1) a plain string, or (2) a reference to a string, or (3) a reference to something else. All of these are scalars. Only (2) would necessarily print "SCALAR(...)" when stringified, though -- that is a reference thing, not a scalar thing. (I say 'necessarily' because while (3) might print "SCALAR(...)", it could also print "ARRAY(...)", "HASH(...)", or any number of other things, depending on what it's a reference to.)