как включить .pl (PERL) файл в PHP - PullRequest
0 голосов
/ 14 апреля 2010

У меня есть две страницы, одна на php (index.php), а другая на Perl (dbcon.pl).

В основном я хочу, чтобы в моем php-файле отображался только пользовательский интерфейс, а все операции с данными выполнялись бы в Perl-файле.

я пытался в index.pl

<?php include("dbcon.pl");?>
<html>
<br/>PHP</br>
</html>

и 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
}

но когда я запускаю index.php в браузере, он печатает весь код в файле dbcon.pl вместо его выполнения

как преодолеть эту проблему?

примечание: я запускаю это в среде Windows

Есть ли другой способ сделать это?

Ответы [ 4 ]

5 голосов
/ 14 апреля 2010

Могу я спросить, в чем проблема на самом деле? Я не вижу ничего «особенного» в коде Perl, поэтому вы тоже:

a) Не знаю, как получить доступ к вашей БД из PHP (т.е. вы не знаете PHP) или

б) Не знаю, что делает Perl (т.е. вы не знаете Perl) или

в) возможно, ваша среда настроена так, что вы можете использовать Perl DBI, но вы не можете сделать то же самое с PHP.

Эта ссылка должна дать вам указатели на то, что вы делаете в Perl напрямую из PHP. Вы легко найдете десятки примеров для различных комбинаций PHP / DB.

Единственным другим способом было бы сделать то, что предлагает другой плакат: вызвать скрипт Perl и проанализировать результат (распечатанный на стандартный вывод).

Это rubygoldbergsque, хрупкое и неприемлемое решение, если только вы не отчаянно хотите использовать что-то, что доступно только в качестве модуля Perl (что не соответствует приведенному вами примеру).

В общем, если вы хотите, чтобы что-то было сделано на каком-либо языке и использовать его на каком-то другом языке, лучшим способом было бы заставить (в вашем случае) Perl работать как своего рода «сервер», то есть отдельный процесс - и заставить его предоставлять сервисы, используя XML-RPC или какой-либо другой упрощенный протокол.

ИСПОЛЬЗОВАНИЕ ПРОГРАММ С EXEC () ИЛИ ПОДОБНЫМИ КОНСТРУКТАМИ - ЧРЕЗВЫЧАЙНО ПЛОХАЯ ПРАКТИКА.

2 голосов
/ 14 апреля 2010

Существует Perl PECL пакет для интеграции Perl в PHP

P.S. ИМХО, лучше использовать систему шаблонов, например Template Toolkit в Perl. Вы даже можете использовать Perl внутри шаблонов.

2 голосов
/ 14 апреля 2010

То, что вы пытаетесь, не так просто. Вам нужно будет выполнить скрипт perl с PHP, захватить вывод и напечатать его следующим образом:

<?php echo exec('perl dbcon.pl'); ?>

Как уже упоминалось, это не очень хорошая вещь. Для хорошего разделения между бэкендом и пользовательским интерфейсом вы должны взглянуть на существующие PHP-фреймворки.

0 голосов
/ 25 апреля 2010

Если вы используете Catalyst , вы можете нас Catalyst :: View :: PHP Я подозреваю, что это даст вам больше подсказок о том, как использовать php в качестве вашей системы шаблонов. Также упоминается PHP :: Интерпретатор

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...