I'm pretty sure perl keeps track of the difference somewhat. That's the only way to explain the existence of "looks_like_number" in both Scalar::Util and perlapi. Although it's not "isnumber" and "isstring," it's "looks_like_number," so I could be wrong.