Perl can't open command pipes that run both in and out, which causes a problem when submitting to SGE via qsub because I lose the job id of my submission. How can I submit a generated script to SGE and capture the job ID that SGE assigns it?
This is a Perl FAQ: How can I open a pipe both to and from a command? (Short answer: see IPC::Open2
)
Another approach is to use the I/O redirection facilities in your shell to capture the output of your external program:
open my $qsub_proc, '|-', "qsub $command $args > some/file";
print {$qsub_proc} $the_input_to_the_command;
close $qsub_proc;
open my $qsub_fh, '<', 'some/file';
my @qsub_output = <$qsub_fh>;
... # now parse @qsub_output to get your job id