"If, however, the variable has been used in only string contexts since it was set, and has a value that is not the empty string and matches the pattern /^[a-zA-Z][0-9]\z/ , the increment is done as a string, preserving each character within its range, with carry..."
So "0wz"++ becomes "0xa", "0xa"++ becomes "the hexadecimal representation of 10, plus one".