The problem here is that he is using Win32::GUI components. Win32::GUI has some strangaties. If you want to catch events, you need a sub for each event on each object. For example if you have an object named x and want to catch a change event, you will need to have a sub called x_Change. If you create another object called y, you will now need to create a sub called y_Change to catch change events for y. Unlike most GUI implementations, you can't register a sub for an event, the sub names are hard coded for each object.
This was one of the many reasons I stopped using Win32::GUI.