my $downloader = eval { new Downloader() } or die($@); print $downloader; ## This will be a different instance my $thread1 = threads->new( sub { print $downloader; ### to this one $downloader->fetch("http://www.webaddress.com", \%siteHash); ## << This ## Will be a different hash to any similarly named hash above ## unless it was shared. } ); ## Unless you are doing other stuff here, ## this is just an exspensive synchronous call :) $thread1->join;