2009-01-18 108 views
3

我有一个用Perl编写的页面。我不知道Perl,所以我写了一个PHP文件,现在只是从Perl页面链接。如果perl页面已经传递了某个变量,我想要将PHP文件嵌入到Perl文件中。如果我使用PHP两个我只是做你可以在Perl文件中包含PHP吗?

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

我知道有很多方法可以读取在Perl的文本文件,但我可以包括一个Perl中的PHP文件文件?

我假设它不会工作,因为它们是由服务器的不同部分处理的,所以没有太高的期望,但也许有人试过类似的东西。

+0

有多难重写你在PHP中使用Perl的东西?我的意思是,这看起来可能,但为什么你会这样做? saludos – 2009-01-18 16:27:59

回答

12

如果你只是想包括所产生的PHP脚本的输出(HTML等)到Perl的生成页面,您可以使用反引号打电话或者通过PHP-CLI PHP脚本,像这样:

首先,test.pl脚本:

[[email protected] 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的脚本:

[[email protected] cgi-bin]# cat test.php 
<?php 

echo "PHP generated this"; 

?> 

这里的RU的输出nning“测试。PL“:

[[email protected] cgi-bin]# perl test.pl 
This is a perl script 
This is from PHP: 
PHP generated this 
Back to perl... 
11

PHPPHP::Interpreter模块,都有一个include方法。尽管我自己也没有尝试过。

+0

已经注意到PHP :: Interpreter很难安装。我自己尝试过,不行。根据提交给cpan的错误,似乎并不支持PHP 5.3。 – 2013-09-04 07:25:35

0

你可以看看这个项目:

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

HP ::包括基础上 滤波器的肩膀::简单解析:: RecDescent的 提供一个Perl程序 包括来自 Perl程序的非常简单的PHP文件。

在使用Perl和PHP时,通过 常常可以方便地在两种语言编写的程序 之间共享 配置数据。一个 解决方案将使用 语言无关配置 文件(我听到有人说XML?)。 另一种解决方案是使用Perl的 灵活性来读取PHP并将它重写为Perl。 PHP :: Include在Filter :: Simple和 Parse :: RecDescent的帮助下将后者 改写为 简单的PHP作为Perl。

筛选::简单用于启用 宏(目前唯一一个) 原因PHP要插值到您的 Perl的源代码,然后将其解析 使用解析:: RecDescent的语法 产生适当的Perl。

PHP :: Include旨在允许 更加冒险添加语法,其中 扩展了PHP的复杂性,可能包括 。

+0

这只支持PHP的一小部分,它可能不够。 – 2009-01-18 16:17:14

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外部程序。但一般步骤是这样的。

相关问题