in reply to Re: How to execute external script from CGI
in thread How to execute external script from CGI

Hi, thanks for your advice. I did try this code:
#updateQuotes.pl use strict; use warnings; use Capture::Tiny qw(capture); print "Content-type: text/html\n\n"; my $cmd = `C:\\batchfiles\\getUpdates.bat`; my ($stdout, $stderr, $exit) = capture { system( $cmd ); }; print "stdout = $stdout<br> stderr = $stderr <br> exit = $exit";
The batch file did execute....however I got the following output
Error from open(IO::Handle=GLOB(0x1501b30), <&STDIN): Bad file descrip +tor at C:/Strawberry/perl/vendor/lib/Capture/Tiny.pm line 107. Captur +e::Tiny::_open(IO::Handle=GLOB(0x1501b30), "<&STDIN") called at C:/St +rawberry/perl/vendor/lib/Capture/Tiny.pm line 184 Capture::Tiny::_cop +y_std() called at C:/Strawberry/perl/vendor/lib/Capture/Tiny.pm line +357 Capture::Tiny::_capture_tee(1, 1, 0, 0, CODE(0x1cb9c8)) called at + C:\inetpub\wwwroot\mywebsite\admin\updateQuotes.pl line 11

Replies are listed 'Best First'.
Re^3: How to execute external script from CGI
by hippo (Archbishop) on May 23, 2020 at 07:05 UTC

    That's because you are taking the output from C:\\batchfiles\\getUpdates.bat and then trying to run that again as another command. That is almost certainly wrong. Do not use backticks when assigning to $cmd, use single quotes. Better yet, use an array instead just like our anonymous brother showed you.

    Best by far, of course, is not to run the subprocess at all but do what you need to do within the one perl process.