Search code examples
perlqsubsungridengine

Captuing job ID when submitting Perl-generated scripts to SGE


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?


Solution

  • 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