use vars qw(%conn $ssh); share(%conn); share($ssh); #code run by thread #Here is where I get the error #Invalid value for shared scalar at $ssh = function(); # in the function sub function { # Create a new pseudo terminal $pty = new IO::Pty $ssh = new Net::Telnet (-fhopen => $pty) return $ssh } # in the Telnet module the code looks like this sub new { my ($class) = @_; $self = $class->SUPER::new; *$self->{net_telnet} = { bin_mode => 0, blksize => &_optimal_blksize(), . . . } $self }