![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Семён Розовых |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 22.11.2002 Репутация: нет Всего: нет |
Можно ли при выполниниии какого либо условия предать управление другому файлу.pl Например:
If ($d==$y) { ............. ............. ............. ............. } else { А вот здесь что б шла передача управления другой программе } ![]() |
|||
|
||||
Powerhead |
|
|||
Unregistered |
Самый простой способ:
print "Location:абсолютный_путь_к_скрипиту?переменные\n\n"; Это работает только в том случае, если программа ранее не выводила никаких заголовков. Можно вызвать через system(); do, whait, зависит от того, что тебе нужно |
|||
|
||||
NightGoblin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1021 Регистрация: 24.11.2002 Где: 127.0.0.1 Репутация: нет Всего: 11 |
![]() ![]() Передать управление другой программе можно несколькими способами: system ($program); # запустить $program как порожденный процесс exec ($program); # Заменить текущий процесс на $program $a = `$program`; # получить в $a стандартный вывод (STDOUT) $program open (PROG_OUT, "$program|"); # Запустить $program и читать ее STDOUT в дескриптор PROG_OUT open (PROG_IN, "|$program"); # Запустить $program и соединить дескриптор PROG_IN с ее стандартным вводом (STDIN). То есть, в предпоследнем примере все, что будет выводить программа на STDOUT, будет подаваться на PROG_OUT и из него можно читать, как из файла. Аналогично, последний вариант передает все, что пишется в PROG_IN, будет передаваться на вводной поток STDIN программы. system () возвращает код завершения программы. Если нужно запустить программу параллельно с текущим процессом, после имени программы добавляется амперсанд: system ("$program &"); однако это чревато дырками и не будет работать, например, в винде. Лучше сделать так:
-------------------- Kernel panic: /dev/null overflow! GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y? B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981 |
|||
|
||||
Powerhead |
|
|||
Unregistered |
А можно, если не сложно, примерчик вызова привести? Вот два скрипта, как из первого получить результат работы второго?
1----------------лежит на одном хосте #!usr/bin/perl ... ... < получить вывод второго скрипта в $a и $b (или в @vals) print "$a $b"; exit; 2---------------на другом хосте #!usr/bin/perl $a = 5; $b = 2; exit; |
|||
|
||||
NightGoblin |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1021 Регистрация: 24.11.2002 Где: 127.0.0.1 Репутация: нет Всего: 11 |
Нууу.... это уже совсем другая история... Посмотри man-страницу perlipc - про межпроцессное взаимодействие в Perl: это тебе надо делать через сокеты, если на разных хостах все лежит... Вот могу привести простой пример с использованием IO::Socket (объектная реализация сокетного интерфейса): (Это скрипт на хосте 1 - вызывать через браузер будем его)
(Некоторые проверки опущены...) (Это скрипт на хосте 2 (www.url.net) - вызывается скриптом 1)
(другой вариант второго скрипта ![]()
В принципе, должа сработать такая фигня ![]() -------------------- Kernel panic: /dev/null overflow! GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y? B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981 |
||||||||
|
|||||||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |