如何在PHP中包含.pl(PERL)文件

dex*_*ter -5 php perl include

我在php(index.php)中有两个页面,在Perl(dbcon.pl)中有另一个页面.

基本上我希望我的php文件只显示UI,所有数据操作都将在Perl文件中完成.

我试过index.pl

<?php include("dbcon.pl");?>
<html>
<br/>PHP</br>
</html>
Run Code Online (Sandbox Code Playgroud)

和dbcon.pl有

#!/usr/bin/perl
use strict;
use warnings;
use DBI;

use CGI::Simple;
my $cgi = CGI::Simple->new;
my $dsn = sprintf('DBI:mysql:database=%s;host=%s','dbname','localhost');

my $dbh = DBI->connect($dsn,root =>'',{AutoCommit => 0,RaisError=> 0});


my $sql= "SELECT * FROM products";
my $sth =$dbh->prepare($sql);
$sth->execute   or die "SQL Error: $DBI::errstr\n";
while (my @row = $sth->fetchrow_array){
print $cgi->header, <<html;
<div>&nbsp;@row[0]&nbsp;@row[1]&nbsp;@row[2]&nbsp;@row[3]&nbsp;@row[4]</div>
html
}
Run Code Online (Sandbox Code Playgroud)

但是当我在浏览器中运行index.php时,它会打印dbcon.pl文件中的所有代码而不是执行它

如何克服这个问题?

注意:我在Windows环境中运行它

还有其他办法吗?

p.m*_*ino 5

请问问题到底是什么?我在Perl代码中看不到任何"特殊",所以你要么:

a)不知道如何从PHP访问您的数据库(即您不了解PHP)或

b)不知道Perl在做什么(即你不知道Perl)或

c)可能你的环境已经设置好了,你可以使用Perl DBI但你不能用PHP做同样的事情.

这个链接应该指导您直接从PHP执行您在Perl中执行的操作.您可以轻松找到各种PHP/DB组合的几十个示例.

唯一的另一种方法是做另一张海报建议的内容:调用Perl脚本并解析结果(打印到标准输出).

这是rubygoldbergsque,脆弱且不可接受的解决方案,除非你绝对不顾一切地使用只能作为Perl模块使用的东西(你发布的例子不是这种情况).

一般来说,如果你想用一种语言完成某些事情并从其他语言中使用它,那么最好的办法就是将(在你的情况下)Perl作为一种"服务器"运行,即一个单独的过程 - 然后制作它使用XML-RPC或其他一些轻量级协议公开服务.

用exec()或类似结构调用程序是非常糟糕的做法.

  • 不,没有分离.您的perl脚本仍然输出UI元素.您应该真正了解所有要进行分离的PHP框架. (2认同)