I posted this already as a reply on BailsUk's post and it got overlooked I think.
The best way to learn how to control yourself in these sort of situations is to start with small steps and work your way up.
And practice where and whenever you can......