tags:

views:

71

answers:

3

How can I call a PHP script from a Perl script and get its output as a variable?

+3  A: 

Using the backtick operator:

my $phpOutput = `/usr/bin/php-cli your-script.php`;

Note that you may have to edit the path to point to your php executable.

If you want to have the output as a stream you can also open with a pipe (Perl <3):

open PHPOUT, "/usr/bin/php-cli your-script.php|";
while (<PHPOUT>) {
  # do something with the current line $_
}

See perldoc -f open.

p4bl0
i did and nothing came up. it is too simple for google, i guess. I am a php guy, as you might have guessed and perl is like a totally different universe for me. thanks.
vasion
+1  A: 

The reverse of this question, but the same answer.

Use backticks or the qx operator:

$output = `/path/to/php my_script.php`;
mobrule
I prefer using `readpipe` to backticks, I think it makes the intent clearer.
Matt
A: 

It may be easier to distill this into it's core problem, "How invoke another program from perl", which is answered in the perlop man page's info about "qx" (or look up the perl qx command through some other means). That informs you how to run an external program and get the output, and this assumed that your PHP script is actually functional when called through the command line (can you run it through "php your-php-script.php" ?).

If your script is only functional through an HTTP request, then you need to use something like the LWP::UserAgent or WWW::Mechanize to get the content through it's URL, similarly to how you would need to use HTTP_Request.php in PHP.

kbenson