запуск perl в php-скрипте и наоборот

arturabramian

Скрипт perl.pl генерит некий кусок хтмл-кода, скрипт php.php генерит свой кусок. Мне нужно получить страницу на сайте, содержащую оба куска кода. Создание новых скриптов не допускается, только модификация уже имеющихся.
Есть ли какой-то простой способ написать внутри perl.pl строчку, чтобы вызывался php.php? И наоборот, внутри php.php надо вызвать perl.pl
Ситуация вообще такая: есть сайт, который в разное время писали (точнее, недописали) два программера, один на перле писал, другой на пхп. Каждая часть по отдельности худо-бедно работает. Задача - их совместить.
Я сам прогать ни на том, ни на другом не умею, но полученные в универе знания по сям и общее понимание "как что должно работать" позволяют мне копипейстить и редактировать куски кода, получая что-то дельное. То есть, сам я написать ничего не могу, но если увижу где-то кусок кода, то могу примерно понять, что он делает, и как его можно модифицировать.

slonishka

exec("perl perl.pl" exec("php php.php") :confused:

slonishka

в смысле это в пхп точно что-то такое было, а в перле — хз, но наверное тоже есть.

pitrik2

exec("php php.php")
в перле это будет так:
print `php php.php`;

kruzer25

Ну в общем-то в php правильное решение - тоже echo `perl-executable perl.pl`.

arturabramian

Че-то не работает. Записал в отдельном файле вызов по очереди двух скриптов, пишет
No input file specified.
За кавычками проследил, ставил обратные. Интересно, чего я не так делаю? Как это можно определить?

kruzer25

А как у тебя перловые скрипты выполняются? Это команда, если что.
Ещё, попробуй полностью там путь к скрипту указать.

arturabramian

Есть .htaccess, в котором написано:
DirectoryIndex perl.pl
Action throw /perl.pl
Как я понимаю, вторая строчка вызывает запуск perl.pl, лежащего в корневой директории на фтп. Дальше, внутри этого скрипта вызываются некоторые другие скрипты, например
do "menu.pl"';
do "scripts/menu2.pl";
В соответствии с рекомендациями, я попробовал написать такое:
файл abcd.php
<?
echo `php php.php`;
echo `perl-executable perl.pl`;
?>
Пробовал дописать в perl.pl строчку
print `php php.php`;
Без видимого результата. Пути прописывал полностью и не полностью, разницы нет.
Я вот думаю, может я не понимаю какой-то принцип "как это устроено" и из-за этого всякие глупые вещи в скриптах пишу?

kruzer25

echo `perl-executable perl.pl`;
Так и написал, что ли?
может я не понимаю какой-то принцип "как это устроено"
Да, похоже на то.
Это устроено так, что php делает вызов perl-executable с аргументом perl.pl - так же, как если бы ты в консоли набрал perl-executable perl.pl и нажал enter.

pitrik2

1.
покажи самую первую строчку в перловых файлах
это может быть типа: #!/usr/bin/perl
а может не быть ничего
2.
echo `php php.php`;
зачем из php пытаешься вызвать php?
echo `perl-executable perl.pl`;
что такое perl-executable?
вместо perl.pl ты имя своего перл файла указывал?
вместо perl-executable ты указывал путь к перлу?
3. в php в настройках наверняка можно отключить возможность запуска внешних скриптов
я php не знаю, просто предполагаю

pitrik2

в php в настройках наверняка можно отключить возможность запуска внешних скриптов
даже может быть так: запрещено запускать скрипты в папках не потомках корневой веб диры

kruzer25

покажи самую первую строчку в перловых файлах
это может быть типа: #!/usr/bin/perl
а может не быть ничего
Это похуй, он же запустить пытатся perl perl.pl, а не perl.pl (во втором случае, надо было бы ещё проверить, что на файл стоит флаг x)
в php в настройках наверняка можно отключить возможность запуска внешних скриптов
При этом явно не такая ошибка будет.

arturabramian

Так и написал, что ли?
Именно так и написал. Как я понимаю, неправильно
Короче, чуток поботаю, чтобы вопросы более квалифицированные были, потом ещё спрошу.
BotWi: вот первые строки перлового скрипта
#!/usr/bin/perl -w
use DBI;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(param);
Как я понимаю, первая строчка закомментирована.

Bibi

неправильно понимаешь, но, наверное, уже успел это заботать
Оставить комментарий
Имя или ник:
Комментарий: