I have had excellent success with
Thread and
Thread::Queue.
Sample code at This node. (Original code was Win32, but success has been reported on Linux - there is no Windows-specific code in the script).
Update 1:I acknowledge my knowledge, and hence, this advice is now somewhat obsolete (although, it continues to work). Please see BrowserUk's advice below.
I believe the sample code would work with minimal modifications, using ithreads (threads) instead of Thread(Perl 5.5), since both modules are compatible with Thread::Queue. Details are in perlthrtut.
"A closed mouth gathers no feet." --Unknown