Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог PHP-шного virtual(), Есть ли такое в Perl? 
:(
    Опции темы
Тиньков
Дата 14.6.2005, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.7.2004
Где: Магнитогорск

Репутация: нет
Всего: нет



В PHP с помощью функции virtual() можно из одного скрипта вызвать выполнение другого, после чего снова вернуться к первому. Возможно ли то же самое реализовать в Perl?
Схематично это выглядит примерно так:

Начало скрипта1
....
Вызов и выполнение скрипта2
....
Конец скрипта1
PM MAIL ICQ   Вверх
korob2001
Дата 14.6.2005, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Код

do "имя файла";

Для наглядности вот пример с двумя файлами. Создай файл hello.pl с таким кодом:
Код

#!/usr/bin/perl -w
use strict;
print "Hello, world!\n";
<>; # ожидаем ввода

теперь рядом создай файл "call_hello.pl" с таким кодом:
Код

#!/usr/bin/perl -w
use strict;

print "Hello from $0 before call hello.pl\n";

do 'hello.pl';

print "Hello from $0 after call hello.pl\n";

Теперь запусти файл call_hello.pl, в результате увидишь примерно такой вывод:

Hello from call_hello.pl before call hello.pl
Hello, world!
здесь программа будет ожидать ввода

Нажми enter, появится ещё одна строка
Hello from call_hello.pl after call hello.pl
Есть ещё несколько способов, но этот на мой взгляд самый актуальный.

Удачи.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Тиньков
Дата 14.6.2005, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.7.2004
Где: Магнитогорск

Репутация: нет
Всего: нет



Спасибо!
Но, как я понимаю, do может работать только с рядом лежащими файлами. А если нужно обратиться к скрипту в виде "http://имя_хоста:порт/название_скрипта"?

PM MAIL ICQ   Вверх
korob2001
Дата 14.6.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Все файлы находятся на одном сервере или ты хочешь подгружать их с других хостов???


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Тиньков
Дата 14.6.2005, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 6.7.2004
Где: Магнитогорск

Репутация: нет
Всего: нет



Не, они на одном сервере все. Но может понадобиться обращение к модулю сервера (mod_plsql в моём случае), который сгенерит часть результирующей HTML-страницы. Или заранее не будет известен путь к скриптам, а будет определяться настройками сервера (alias /scripts/ "somepath/scripts")
PM MAIL ICQ   Вверх
korob2001
Дата 14.6.2005, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Указывай примерно такой путь:
/home/localhost/cgi-bin/hello.pl
В итоге, программа call_hello.pl будет выглядеть примерно так:
Код

#!/usr/bin/perl -w
use strict;

print qq|Content-type: text/html\n\n|;
print qq|<html><head><title>Test</title></head><body>|;
print qq|<h1>Hello, from $0 before call hello.pl</h1>|;

do "/home/localhost/cgi-bin/hello.pl";

print qq|<h1>Hello, from $0 after call hello.pl</h1>|;
print qq|</body></html>|;

а программа hello.pl, так:
Код

#!/usr/bin/perl -w
print qq|<hr><h1>This text from hello.pl programm</h1>|;
print qq|<b>Hello, world!</b><hr>|;

Удачи.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1343 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.