use File::Temp qw/ tempfile /; my ( $fh, $filename ) = tempfile(); my ( $eh, $errorname ) = tempfile(); use Win32::Job; my $job = Win32::Job->new; my $exe = "remotely_executing_program_tool.exe"; my $args = " some_command_line_that_connects_and_runs_stuff_on_remote_machine"; my %opts = ( 'stdout' => $fh, 'stderr' => $eh ); #print $args; $job->spawn( $exe, $args, \%opts ); $job->run(120); $job->kill(); local $/ = undef; open F, '<', $filename; $text = ; close F; $connectOk = 0 if length($text) < 1; open F, '<', $errorname; $errStr = ; close F; $retval = $text; #print $retval;