threads doc's have two potentially interesting things to say, that may just help.
firstly, you seem to missing a semicolon or two.
async BLOCK;
"async" creates a thread to execute the block immediately foll
+owing
it. This block is treated as an anonymous subroutine, and so m
+ust have
a semicolon after the closing brace.
also
Threads are implemented in a way that make them easy to misuse.
Few people know how to use them correctly or will be able to provide h
+elp.
The use of interpreter-based threads in perl is officially discouraged
+.