Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Запуск файла


Автор: apook 1.10.2007, 14:24
Как запустить exe файл из скрипта на Perl

Автор: GrayCardinal 1.10.2007, 14:29
system ("ls -alh");

Автор: amg 1.10.2007, 14:44
qxsystemexecopen

Автор: GrayCardinal 1.10.2007, 15:04
amg
А "qx" это как ?

Автор: apook 1.10.2007, 15:13
Благодарю за ответы. Но я заморачиваюсь по поводу возврата в скрипт некого результата работы exe-шника. Первое что приходит на ум запись результата в файл на диске и затем считывания этого файла скриптом , но то слишком банально. Может в Пел есть что то типа пайпов там потоки обмена данными или что то такое?  smile   

Автор: GrayCardinal 1.10.2007, 15:15
apook
Так (на коленке)
Цитата

 open (FILE, "ls |");
 @out = <FILE>

@out - строки, что выдала "ls"

Автор: amg 1.10.2007, 15:29
Цитата(GrayCardinal @  1.10.2007,  15:04 Найти цитируемый пост)
amg, А "qx" это как ?
Цитата(apook @  1.10.2007,  15:13 Найти цитируемый пост)
 Но я заморачиваюсь по поводу возврата в скрипт некого результата работы exe-шника.
qx (синоним для обратных кавычек) как раз для этого. @out = qx('ls'); либо @out = `ls`; В отличие от open, не позволяет получать данные по мере поступления, только все разом и через шелл (с помощью open можно сделать без участия шелла).

Автор: apook 1.10.2007, 15:42
Цитата(amg @  1.10.2007,  15:29 Найти цитируемый пост)
с помощью open можно сделать без участия шелла
крайне заинтересован поподробней пожалуйстаЯ пошел гуглить....

Автор: amg 1.10.2007, 15:47
Читай про open с двумя или более аргументами.
open('-|', "command");

Автор: apook 1.10.2007, 16:12
http://forum.vingrad.ru/act-Print/client/html/f-5/t-2962.html

Автор: apook 1.10.2007, 16:56
Код

#!/usr/bin/perl -w

open( README, "dir /b /ad C:\\*.* |" ) or die "Can`t run programm $!\n";
while( <README> )
{
    print $_;
    }
close( README );

Но меня не покидает подозрение что вывод все-же после завершения программы, в данном случае команда dir??

Автор: amg 1.10.2007, 17:51
Цитата(apook @  1.10.2007,  16:56 Найти цитируемый пост)
"dir /b /ad C:\\*.* |"
Чтобы проверить, попробуй что-то вроде 'perl -le "print($_) and sleep for 1..10" |'
Цитата(amg @  1.10.2007,  15:47 Найти цитируемый пост)
Читай про open с двумя или более аргументами.
 Это я впопыхах ошибся. Имелось в виду с тремя или более аргументами (еще FH, конечно).


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)