[Biodevelopers] WWWBLAST: blast.REAL process can't read param

Hancy Frederic hancy at gene.ucl.ac.be
Mon Apr 19 12:35:21 EDT 2004


>Yes. Right. Your CGI wrapper will get the input from STDIN but there is
>no reason why it can't call a child program with commad line argument.
>"@ARGV" in my code was actually argument passed to the child process. If
>you are calling the "exec" from a CGI wrapper then @ARGV will be
>undefined. You need to set these arguments and called the child program
>with the command line params.
>
>Malay


To my surprise @ARGV is empty even before using the CGI wrapper, though my
command gets the data through STDIN.
It works like the original bash script: exec "./blast.REAL" or die "..";
with your syntax ("./blast.REAL", @ARGV), it works as well but the argument
is simply discarded since it's empty. Until now, I thought that everything
that was transmitted as invocation arguments when calling a perl script in
command line was available either through STDIN or @ARGV. Apparently with a
CGI script, it doesn't work that way...?

Whenever I start reading from STDIN or using the CGI wrapper before the
execution of my command (adn I need to do it to get username and set BLASTDB
env), then the command doesn't receive the data anymore. If I store the data
in a variable and use it as an argument in the command, it doesn't work
either. If I write the same variable to a file, and use with STDIN redirect
to the command, then it works:

exec "./blast.REAL < /tmp/formdata" or die "..

Could it be just a syntax problem in exec, the arguments are simply not
read?

I've tried to following with no success:

exec "./blast.REAL", @formdata or die "..
exec ("./blast.REAL", @formdata) or die "..
exec "blast.REAL @formdata" or die "..
(same with a scalar)

Fred.






More information about the Biodevelopers mailing list