1. Package wrapper for NET::FTP (error checking) 2. main code that creates threads and self master. # File 1 package myFtp; use Net::FTP; use Net::Cmd; our @ftpObj; our @ftpList = (); our @code; sub Connect { my ($ftpServer, $ftpTimeout, $connection_type) = @_; #debug ("Trying -> ", $ftpServer); $ftpObj = Net::FTP->new($ftpServer, Timeout => $ftpTimeout, Passive => $connection_type); return; } #other functions.... #### #File 2 (Main Code) use SPFtp qw(/^\$/); use SPFtp qw (Connect Login PrepareLsFtpList deleteFile GetFile GetFileSize Logout GetMessage CheckConnection); # Create Thread 1 Connect("bugs", "60", "binary"); # Create Thread 2 Connect("bugs", "60", "binary"); # Create Thread 3 Connect("bugs", "60", "binary"); # Create Thread 4 Connect("bugs", "60", "binary"); # Master Thread