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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Три способа выполнить внешнюю программу 
V
    Опции темы
Danissimo
Дата 14.8.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



ВОТ ЭТО Я ВОШЕЛ! =)))

А вот, собсно, и вопрос.

чем отличается

open F, "< PlatformInfo";
my @x = <F>;

open F, "PlatformInfo |"
my @x = <F>;

и 

my @x = `PelatformInfo`;

где PlatformInfo -- исполняемый файл.
PM MAIL   Вверх
amg
Дата 15.8.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



В 1-м случае в @x помещается содержимое файла PlatformInfo, а во 2-м и 3-м - то, что программа PlatformInfo печатает на экран при исполнении (по строкам, каждая строка - элемент массива).
PM MAIL   Вверх
Danissimo
Дата 15.8.2006, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ok, тогда чем отличаются второй и третий варианты? И чем они отличаются от четвертого:
Код

system(LIST);

?
PM MAIL   Вверх
amg
Дата 15.8.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Во втором варианте открывается поток, который в принципе можно обрабатывать по мере поступления, хотя, учитывая идущую следом строку (my @x = <F>;), этого не делается, и поэтому варианты 2 и 3 практически не отличаются (для меня). Возможно, есть какие-то тонкие различия, надо читать документацию.

Насчет 4-го варианта:
perldoc -f system
PM MAIL   Вверх
Danissimo
Дата 16.8.2006, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Звучит более чем разумно. Зачот!

А по поводу perldoc -f system, так я б не спрашивал, если бы понял. То ли я привык к более формальной спецификации, то ли просто не привык к тому, как специфицируется Perl. В любом случае, читая perldoc, не складывается ощущения понимания, черт побери =)
PM MAIL   Вверх
amg
Дата 16.8.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



system, в отличие от обратных кавычек или qx(), не возвращает вывод исполняемой программы.
Читай Lama Book (есть перевод на русский), там понятно написано.
PM MAIL   Вверх
nitr
Дата 16.8.2006, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Danissimo @  16.8.2006,  12:10 Найти цитируемый пост)
читая perldoc, не складывается ощущения понимания, черт побери

к глубокому сожалению ;)
Раз не помогают, значицца книжки... и о них писали smile (поиск форума)


--------------------
PM   Вверх
UncleAndy
Дата 13.1.2011, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вопрос в продолжение темы.
Как в данных случаях отловить ошибку при исполнении внешней программы? Где взять ее код возврата?
PM MAIL   Вверх
arto
Дата 13.1.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



perldoc -f system
perldoc -f close
perldoc -v $?
PM MAIL ICQ   Вверх
Aahen
Дата 16.1.2011, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



еще можно 
Код

$result = `/path/command`


--------------
палладий металл

Это сообщение отредактировал(а) Aahen - 5.1.2020, 14:44
PM MAIL WWW   Вверх
taryk
Дата 16.1.2011, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Aahen @ 16.1.2011,  17:57)
еще можно 
Код

$result = `/path/command`

это результат исполнения программы.
exit-код находиться в переменной $?

Код

$result = `/path/command`;
$exitcode = ($?>>8);

PM MAIL   Вверх
UncleAndy
Дата 16.1.2011, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



[QUOTE=taryk,16.1.2011,  21:30]
Цитата(Aahen @ 16.1.2011,  17:57)
это результат исполнения программы.
exit-код находиться в переменной $?

Код

$result = `/path/command`;
$exitcode = ($?>>8);

Да, я именно про exit code. Спасибо.
PM MAIL   Вверх
Google
  Дата 27.1.2020, 19:42 (ссылка)  





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


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

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


 




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


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

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