Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Можно ли.... |
Автор: Семён Розовых 3.12.2002, 14:58 |
Можно ли при выполниниии какого либо условия предать управление другому файлу.pl Например: If ($d==$y) { ............. ............. ............. ............. } else { А вот здесь что б шла передача управления другой программе } ![]() |
Автор: Powerhead 3.12.2002, 23:10 |
Самый простой способ: print "Location:абсолютный_путь_к_скрипиту?переменные\n\n"; Это работает только в том случае, если программа ранее не выводила никаких заголовков. Можно вызвать через system(); do, whait, зависит от того, что тебе нужно |
Автор: NightGoblin 4.12.2002, 10:54 | ||
![]() ![]() Передать управление другой программе можно несколькими способами: 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 &"); однако это чревато дырками и не будет работать, например, в винде. Лучше сделать так:
|
Автор: Powerhead 13.12.2002, 01:40 |
А можно, если не сложно, примерчик вызова привести? Вот два скрипта, как из первого получить результат работы второго? 1----------------лежит на одном хосте #!usr/bin/perl ... ... < получить вывод второго скрипта в $a и $b (или в @vals) print "$a $b"; exit; 2---------------на другом хосте #!usr/bin/perl $a = 5; $b = 2; exit; |
Автор: NightGoblin 14.12.2002, 17:01 | ||||||||
Нууу.... это уже совсем другая история... Посмотри man-страницу perlipc - про межпроцессное взаимодействие в Perl: это тебе надо делать через сокеты, если на разных хостах все лежит... Вот могу привести простой пример с использованием IO::Socket (объектная реализация сокетного интерфейса): (Это скрипт на хосте 1 - вызывать через браузер будем его)
(Некоторые проверки опущены...) (Это скрипт на хосте 2 (www.url.net) - вызывается скриптом 1)
(другой вариант второго скрипта ![]()
В принципе, должа сработать такая фигня ![]() |