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


Автор: chaos 10.1.2005, 15:52
допустим делаю
system("perl test.pl");

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

как можно получить эту строку?

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

Автор: chaos 11.1.2005, 08:39
Цитата(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);

Автор: dimes 11.1.2005, 11:54
Объясни что ты хочеш получить, результат выполнения скрипта или содержимое скрипта.
Если 1 то я тебе показал как.

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

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

а потом читать темп.тхт....

Автор: korob2001 11.1.2005, 21:49
Как я понял, нужно сохранить результат выполнения системной команды в переменную, для дальнейшей обработки. Если да, то 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 ваше_имя!
Думаю понятно изложил. ;)))))))))

Удачи.

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