你可以在Perl文件中包含PHP吗?

时间:2009-01-18 16:05:49

标签: php perl

我有一个由其他人用Perl编写的页面。我不知道Perl,所以我写了一个PHP文件,现在只是来自Perl页面的链接。如果perl页面已经传递了某个变量,我想要做的是将PHP文件嵌入到Perl文件中。如果我使用PHP,我可以做到

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

我知道有办法在Perl中读取文本文件,但是我可以在Perl文件中包含PHP文件吗?

我认为它不起作用,因为它们是由服务器的不同部分处理的,所以没有很高的期望,但也许某人尝试了类似的东西。

4 个答案:

答案 0 :(得分:14)

如果您只想将PHP脚本的结果输出(HTML等)包含到perl生成的页面中,您可以使用反引号通过php-cli调用PHP脚本,如下所示:

首先,test.pl脚本:

[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;

接下来,test.php脚本:

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

echo "PHP generated this";

?>

这是运行“test.pl”的输出:

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

答案 1 :(得分:11)

PHPPHP::Interpreter个模块,两者都有include方法。我自己也没试过过。

答案 2 :(得分:1)

Perl解释器可以执行Perl语法命令,尽管Perl和PHP语法之间存在一些相似之处,但您需要一个PHP解释器来运行PHP代码。 相反,您可以使用一些Perl命令来使用PHP脚本的输出。您应该在Perl代码中使用系统PHP解释器执行PHP脚本,然后使用该执行的输出。您的PHP代码需要是一些命令行代码,它将返回(如echo或print)输出。如果需要将参数传递给PHP代码,请在Perl代码中执行PHP脚本时使用命令行参数。 所以你的Perl代码将是这样的:

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

并且您的PHP脚本可以接收如下参数:

<?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;
?>

我不是Perl程序员,因此可能有其他(更好的)方法在Perl中执行外部程序。但一般步骤都是这样的。

答案 3 :(得分:0)

你可以查看这个项目:

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

  

HP :: Include 构建于肩上   Filter :: Simple和Parse :: RecDescent   为...提供Perl实用程序   包括一个非常简单的PHP文件   Perl程序。

     

使用Perl和PHP时,它是   经常方便分享   程序之间的配置数据   用两种语言写的。一   对此的解决方案是使用a   语言独立配置   文件(我听到有人说XML吗?)。   另一个解决方案是使用Perl   灵活地读取PHP并重写它   作为Perl。 PHP :: Include执行后者   在Filter :: Simple和的帮助下   Parse :: RecDescent非常重写   简单的PHP作为Perl。

     

Filter :: Simple用于启用   宏(目前只有一个)哪个   导致PHP插入你的   Perl源代码,然后进行解析   使用Parse :: RecDescent语法   生成适当的Perl。

     

PHP :: Include旨在允许   更喜欢添加语法的冒险者   扩展可能的PHP的复杂性   包括在内。