Bir Perl PHP dosyası dahil miyim?

4 Cevap php

Ben başkası tarafından Perl ile yazılmış bir sayfa var. Perl bilmiyorum, bu yüzden şu anda sadece Perl sayfasından bağlayan bir PHP dosyası yazdı. Perl sayfa belli bir değişken geçti ne ben yapmak istiyorum Perl dosyası PHP dosya gömmek edilir. Ben sadece yapabileceği her ikisi için PHP kullanarak olsaydı

if ($_GET['sidebar']) include "embedded.php";

Perl'de metin dosyalarını okumak için yolları vardır biliyorum, ama ben bir Perl dosyası içinde bir PHP dosyası ekleyebilirsiniz?

Ben onlar sunucusunun farklı bölgelerinde işlenen çünkü işe yaramayacağını varsayarak, bu yüzden hiçbir yüksek umutları, ama belki birileri böyle bir şey denedi ediyorum.

4 Cevap

Sadece perl oluşturulan sayfanın içine PHP script çıktıyı (HTML, vb) dahil etmek istiyorsanız bu gibi php-cli yoluyla PHP komut dosyası ya aramak için backticks kullanabilirsiniz:

Birincisi, test.pl komut:

[root@www1 cgi-bin]# cat test.pl
#!/usr/bin/perl
print "This is a perl script\n";
my $output = `php test.php`;
print "This is from PHP:\n$output\n";
print "Back to perl...\n";
exit 0;

Sonraki, dnm.php komut:

[root@www1 cgi-bin]# cat test.php
<?php

echo "PHP generated this";

?>

Burada "test.pl" çalışan çıkışı bulunuyor:

[root@www1 cgi-bin]# perl test.pl
This is a perl script
This is from PHP:
PHP generated this
Back to perl...

PHP ve PHP::Interpreter modülleri bulunmaktadır, her ikisi de bir include yöntemi vardır. Kendimi olsa ya onları denemedim.

Perl interpreter can execute Perl syntax commands, despite there are some similarities between Perl and PHP syntax, you will need a PHP interpreter to run PHP code. Instead you can use some Perl commands to use output of a PHP script. you should execute the PHP script using the system PHP interpreter in your Perl code, and then use the output of that execution. your PHP code needs to be some command line code that will return (like echo or print) the output. if you need to pass arguments to the PHP code, use command line arguments when executing the PHP script in your Perl code. so your Perl code will be like this:

 // your code before PHP call
 $php_output = `php /path/to/php/script -param1 -param2 -param3`;
 // your code after PHP call

ve PHP komut dosyası bu gibi parametreleri alabilirsiniz:

<?php
// argv() is defined by PHP and contains all command line params
$params = argv();
// first index of argv is the name of the PHP script you are running.
array_shift($params);
// now you have all parameters.
// your code here generates some results.
echo $resutls;
?>

Ben bir Perl programcı değilim, bu yüzden Perl bir dış program çalıştırmak için başka (daha iyi) yollar olabilir. ancak genel adımlar bu gibidir.

Bu projeyi kontrol edebilir:

http://metacpan.org/pod/PHP::Include

HP::Include builds on the shoulders of Filter::Simple and Parse::RecDescent to provide a Perl utility for including very simple PHP Files from a Perl program.

When working with Perl and PHP it is often convenient to be able to share configuration data between programs written in both languages. One solution to this would be to use a language independent configuration file (did I hear someone say XML?). Another solution is to use Perl's flexibility to read PHP and rewrite it as Perl. PHP::Include does the latter with the help of Filter::Simple and Parse::RecDescent to rewrite very simple PHP as Perl.

Filter::Simple is used to enable macros (at the moment only one) which cause PHP to be interpolated into your Perl source code, which is then parsed using a Parse::RecDescent grammar to generate the appropriate Perl.

PHP::Include was designed to allow the more adventurous to add grammars that extend the complexity of PHP that may be included.