use Symbol qw( gensym ); use IPC::Open2 qw(open2); use Env; use IO::Select; use IO::File; use IO::Handle; use Data::Dumper; my ($chld_to,$chld_frm)=map gensym, 1..2; my $pid; print "Logging out first\n"; eval { select STDOUT; $|=1; $chld_to=*STDIN; $chld_frm=*STDOUT; select $chld_to; $|=1; select $chld_frm; $/=":"; $|=1; $pid=open2($chld_frm,$chld_to,"${bin_dir}system.exe","-logout") or die "Could not launch LOGOUT: $? - $!"; sleep 2; print Dumper $chld_to; my $output=<$chld_frm>; print STDOUT "PID : $pid\n"; print STDOUT "OUTPUT (): $output\n"; if ($output =~ /^user/i) { print $chld_to "${USER}"; } if ($output =~ /^passw/i) { print $chld_to "${PASSW}"; } waitpid($pid,0); close $chld_to; close $chld_frm; close EXH; }; if ($!) { print "Error loggin out: $? $!\n"; } else { print "Logged out: $? $! \n"; }