The quick answer, which you have recieved, is that $^O contains
the "name" of the OS. This is actually imprecise.
Particularly,
the value of $^O is compiled in, but $^O = MSWin32 on all of:
Win95, 98, me, NT, and 2k. That isn't very helpful. Worse, $^O isn't
write protected, meaning that someone could stick "MSWin32" in there when
you were expecting "bsdos" or "solaris".
Of course, for the most part $^O is sufficient.