Hello folks,
I am writing a web based interface to gpg and am using IPC::Open3 and
IO::Select to manage STDIN, STDOUT and STDERR handles. But, I can not
get stdin to work properly. Here is my code:

$gpgCommand     = "gpg --homedir $home --no-default-keyring
--secret-keyring rasoul.asc --decrypt $encryptedFile";
print "$gpgCommand\n";
$pid            = open3(*FIN,*FOUT,*FERR,"$gpgCommand");
$SIG{CHLD}      = sub { print "REAPER: status $? on $pid\n" if
waitpid($pid,0) > 0 };

    
$selector       = IO::Select->new();
$selector->add(*FOUT,*FERR);
while (@handles = $selector->handles)
{       
        foreach my $fh (@handles)
        {       
                if (fileno($fh) == fileno(FERR))
                {       
                        print "STDERR: ", scalar <FERR>
                }
                elsif (fileno($fh) == fileno(FOUT))
                {       
                        @out    = <FOUT>;
                }
                elsif ((fileno($fh) == fileno(FIN))
                {
                        print FIN "$passPhrase\n";
                }
                $selector->remove($fh) if eof($fh);
        }
}
$pf->close;
close FERR;
close FIN;  
close FOUT;

I am using perl 5.053 and Apache/1.3.14 Ben-SSL/1.42 (Unix) PHP/4.0.3pl1
mod_perl/1.24_01.
Can anyone see what am I doing wrong?
Thanks in advance
-r

Reply via email to