Have you ever been surprised to find that after a subroutine finished, the value of the original variable had changed for some reason, even though you just passed it to the subroutine to be processed?