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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> результат выполнения, как получить ? 
:(
    Опции темы
chaos
Дата 10.1.2005, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

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



допустим делаю
system("perl test.pl");

содержимое test.pl
print "hello world";

как можно получить эту строку?
PM WWW   Вверх
dimes
Дата 10.1.2005, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



1.
my $out=join "",`test.pl`;
2.
open(Exe,'|test.pl');
while (<Exe>){
$out.=$_;
}
close(Exe);
Про пайпу нужно по точнее прочитать, есть разница где она стоит в конце или в начале
PM ICQ   Вверх
chaos
Дата 11.1.2005, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

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



Цитата(dimes @ 10.1.2005, 16:16)
1.
my $out=join "",`test.pl`;
2.
open(Exe,'|test.pl');
while (<Exe>){
$out.=$_;
}
close(Exe);
Про пайпу нужно по точнее прочитать, есть разница где она стоит в конце или в начале

ты наверное так хотел написать:
Код

open(Exe,'<test.pl');
while (<Exe>){
$out.=$_;
}
close(Exe);

PM WWW   Вверх
dimes
Дата 11.1.2005, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Объясни что ты хочеш получить, результат выполнения скрипта или содержимое скрипта.
Если 1 то я тебе показал как.
PM ICQ   Вверх
cybear
Дата 11.1.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 20.11.2004
Где: Tallinn, Estonia

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



если выполняеться именно перл скрипт, тогда вроде можно так:

system "perl test.pl >> temp.txt";

а потом читать темп.тхт....
PM MAIL WWW ICQ MSN   Вверх
korob2001
Дата 11.1.2005, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Как я понял, нужно сохранить результат выполнения системной команды в переменную, для дальнейшей обработки. Если да, то system('dir') просто выполнит команду dir, тебе же нужны обратные кавычки.
Просто напиши так:
Код

#!/usr/bin/perl
my $result = `dir`;
# Теперь переменна $result содержит результат
# выполнения команды dir
print $result;


Теперь давай подумаем как получить строку из файла test.pl
Допустим файл test.pl выглядит так:
Код

#!/usr/bin/perl
print "Hello, world!\n";

Нам нужно получить результат работы этого файла и сохранить его в переменную.
Для того, что бы пример был более интересным, давай запросим во втором файле имя пользователя, затем получим строку "Hello, world!" из файла test.pl, после добавим к этой строке такую строку " and имя_пользователя!" и результат выведем на экран.
Пишем такой код:
Код

#!/usr/bin/perl
my $name = "";
# Запрашиваем имя пользователя
while (1) {
last if length( $name ) > 2;
print "Please enter your name: ";
chomp( $name = <STDIN> );
}

# Получаем результат работы файла test.pl
my $res_test = `perl test.pl`;
# Отсекаем символ перевода строки
chomp( $res_test );
# Отсекаем восклицательный знак
chop( $res_test );
# Добавляем к строке полученной из файла test.pl строку " and имя_пользователя!\n"
$res_test .= " and ${name}!\n";
# Выводим на экран содержимое переменной $res_test
print $res_test;

Сохраним его в файле hello.pl, в тот же каталог где лежит файл test.pl. Теперь запустим файл hello.pl на выполнение. В командной строке вводим:
C:\>perl hello.pl
После программа запросит имя пользователя, введём своё имя и жмём Enter.
В ответ получим такую строку:
Hello, world and ваше_имя!
Думаю понятно изложил. ;)))))))))

Удачи.


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


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

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


 




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


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

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