use warnings; use strict; use threads; use IO::Socket; my $socket = IO::Socket::INET->new(); # pass your parameters threads->create(\&do_stuff, $socket); sleep(0xffffffff); # ;-) sub do_stuff { my ($socket) = @_; # play happily ever after with $socket in your new thread }