Code tested as is on Win98/ActiveState 5.8.2 (identical results from MS_DOS Prompt and MSYS commandline):
[ ~/tmp ] $ perl pg_filevent
Start to listen ...
Entered numbers()
about to send 1
Connection established
about to send 2
about to send 3
about to send 4
about to send 5
about to send 6
about to send 7
about to send 8
about to send 9
about to send 10
numbers() thread quiting ...
callback triggered
callback triggered
callback triggered
The last line was repeated every time button was clicked.
I then retested as before but with 'fileevent' commented out:
[ ~/tmp ] $ perl pg_filevent
Start to listen ...
Entered numbers()
about to send 1
Connection established
about to send 2
about to send 3
about to send 4
about to send 5
about to send 6
about to send 7
about to send 8
about to send 9
about to send 10
numbers() thread quiting ...
callback triggered
After read
1callback triggered
After read
2callback triggered
After read
3callback triggered
After read
4[ ~/tmp ] $
With this test I noticed that the number displayed above the button incremented with each button click.
In the previous tests, I waited until numbers() thread quiting ... was displayed before clicking the button. In this test, I started clicking the button as soon as the GUI appeared.
[ ~/tmp ] $ perl pg_filevent
Start to listen ...
Entered numbers()
about to send 1
Connection established
about to send 2
callback triggered
After read
1about to send 3
callback triggered
After read
2about to send 4
callback triggered
After read
3about to send 5
callback triggered
After read
4about to send 6
callback triggered
After read
5about to send 7
callback triggered
After read
6about to send 8
callback triggered
After read
7about to send 9
about to send 10
callback triggered
After read
8numbers() thread quiting ...
callback triggered
After read
9callback triggered
After read
10