![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| ssdm |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 13.8.2010 Репутация: 2 Всего: 2 |
Привет.
При конвейерной обработке двух программ, поток вывода первой команды передается в поток ввода второй команды. Но как быть если первая команда ничего не вернула ? Или вообще вызвана не была? В этом случае программа номер два останавливается и ждет ввода с клавиатуры. Вот пример :
Как можно обойти эту проблему ? |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
1. вернет undef
2. exit if (-t STDIN) |
|||
|
||||
| ssdm |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 13.8.2010 Репутация: 2 Всего: 2 |
||||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# false | perl -le '$a = <STDIN> || "none"; print $a;'
none # |
|||
|
||||
| ssdm |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 13.8.2010 Репутация: 2 Всего: 2 |
да.. тут все правильно , а если первая команда вызвана не была ? то есть perl -le '$a = <STDIN> || "none"; print $a; тогда ждем ввода символов add: Все. Разобрался. Просто надо юзать unless (-t STDIN). Спасибо за помощь! Это сообщение отредактировал(а) ssdm - 25.8.2010, 10:25 |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |