in reply to Re^3: replace use HTTP::Lite to run a perl file that was on another server
in thread replace use HTTP::Lite to run a perl file that was on another server

This works just fine for me as a "redirect"

#!/usr/bin/perl -w my $cgi='/home/huck/cvs/cgi-bins/bt-bin/ut-active.pl'; my $parms='txtstats-1=1'; my $all=get_response($cgi,$parms); #my $all=get_response("/full/path/to/copyorders_multiple.pl", "refID=" +.&trim($license)); my ($data)=$all=~/\n\n(.*)$/s; #print $data; print $all; sub get_response { local %ENV=%ENV; my ($cgi, $CMD) = @_; ## prepare proper (CGI) environment $ENV{QUERY_STRING} = $CMD; $ENV{REQUEST_METHOD} = 'GET'; $ENV{GATEWAY_INTERFACE} = 'CGI/1.1'; # add more as needed open(CGI, "$cgi |") or die "Can't exec $cgi, $!"; local $/ = undef; my $res = <CGI>; close(CGI) or die "Error running $cgi, $!"; return $res; }
so i dont know what to say, perhaps what Hippo says in Re^4: replace use HTTP::Lite to run a perl file that was on another server is the problem, or you could look in the error log, mine is at /var/log/apache2/error.log, YMMV

Notice i printed $all, so all the proper headers would be returned to the browser

EDIT: "as a redirect", means that going to http://lxle0/bt-bin/fakecgi.pl returned the same as going to http://lxle0/bt-bin/ut-active.pl?txtstats-1=1. This is an internal server running apache2 on lxle (ubuntu) and in /etc/apache2/apache2.conf there is

ScriptAlias /bt-bin/ /home/huck/cvs/cgi-bins/bt-bin/ <Directory /home/huck/cvs/cgi-bins/bt-bin/> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all AllowOverride None Satisfy Any # Require all granted Options +ExecCGI AddHandler cgi-script .cgi .pl </Directory>

Replies are listed 'Best First'.
Re^5: replace use HTTP::Lite to run a perl file that was on another server
by RonW (Parson) on Feb 21, 2017 at 01:43 UTC

    I would recommend the 3 argument form of open instead:

    open(CGI, '-|', $cgi) or die "Can't exec $cgi, $!";

    as it is generally safer.

      G'day RonW,

      Recommending the 3-argument form of open is sound advice; however, using a globally-scoped, package variable (i.e. CGI) is not. This would have been better:

      open my $pipe_from_cgi, '-|', $cgi or die ...

      — Ken

        I overlooked that. I was only focused on the 2 vs 3 arg forms of open. Yes, a globally scoped file handle is also not a good idea.