On Mon, Jan 07, 2008 at 11:42:06AM -0500, Trey Harris wrote: > So $?OS isn't "the type of OS", it's *the OS*, and you can manipulate the > OS through it.
Note that $?OS is the OS that is-or-was running at compile time, whereas $*OS is the OS running right now (at run time). Those don't have to be the same, especially for modules distributed in some kind of universal bytecodeish format. That is, $?OS is a compile-time constant, while $*OS is a variable. In fact, if someone invents a way for a process to freeze and restore the execution context in a different place, $*OS could change more than once. All $? variables should be considered compile-time constants, in fact. That's why "self" is no longer spelled $?SELF, for instance, because it varies. Larry