$var inside a proc (wittout calling it globaly using "global var") is seen as an local variable. The $::var is equal with "global var" and used in the proc as "$var". Hope you've understood somehting from this.. Do a forum search and you'll find a better explination because this question had his answer before.
Once the game is over, the king and the pawn go back in the same box.