| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > STDIN в конвеерной обработке |
| Автор: ssdm 24.8.2010, 18:14 | ||
| Привет. При конвейерной обработке двух программ, поток вывода первой команды передается в поток ввода второй команды. Но как быть если первая команда ничего не вернула ? Или вообще вызвана не была? В этом случае программа номер два останавливается и ждет ввода с клавиатуры. Вот пример :
Как можно обойти эту проблему ? |
| Автор: arto 24.8.2010, 19:06 |
| 1. вернет undef 2. exit if (-t STDIN) |
| Автор: ssdm 24.8.2010, 19:23 |
в том то и дело что undef не возвращает.. просто ждет ввода символа.. exit if (-t STDIN) - завтра попробую |
| Автор: arto 24.8.2010, 20:51 |
| # false | perl -le '$a = <STDIN> || "none"; print $a;' none # |
| Автор: ssdm 25.8.2010, 10:21 |
да.. тут все правильно , а если первая команда вызвана не была ? то есть perl -le '$a = <STDIN> || "none"; print $a; тогда ждем ввода символов add: Все. Разобрался. Просто надо юзать unless (-t STDIN). Спасибо за помощь! |