AP> В сообщении от Wednesday 24 September 2008 13:26:14 Dmitry E. Oboukhov AP> написал(а): AP>> например файловые операции на шелле всегда делаются проще AP>> AP>> grep bla-bla file.txt|awk bla-bla|filter bla-bla >file2.txt AP> Пайпы вроде как ядром поддерживаются и запуск бинарника тоже шелл не требует. AP> Так что в этом примере собственно от шелла - перенаправление вывода? пусть даже пайпы пайпы ядром, а использование их какое? pipe $in, $out; if (fork) { close $in; exec grep => @grep_args; } else { close $out; pipe $in2, $out2; if (fork) { close $in2; exec awk => @awk_args; } else { close $out2; exec filter => @filter_args; } } это если честно их ядерные пользовать (если в коде напутки есть - то сорри по памяти писал... PS: причем данный код в отличие от шелловского ошибки exec'ов не проверяет и пытается построить _всю_ цепочку пайпов) кроме того в шелле есть много прекрасных утилит которых нет в языках то есть например мы пишем если if wget uri -O-|grep -q bla-bla; then еcho на сайте появилось что мы ждем fi то это значит что wget парой опций можно настроить чтобы он 1. пытался до упора ломиться (-t 0) 2. ходил по location'ам итп (он без опций это делает) в перле конечно есть WWW::Mechanize, но аналогичный код с его использованием будет явно больше в минимуме это так: $browser=new WWW::Mechanize; $browser->get(uri); if ($browser->success() and $browser->content =~/bla-bla/) { print "на сайте появилось что мы ждем\n"; } однако ретраи данный код не делает (в отличие от wget), тут надо ваять что-то вроде (правда диагностику что проблемы с сетью на нашей стороне этот код не делает): $browser=new WWW::Mechanize; $browser->get(uri) until $browser->success; if ($browser->content =~/bla-bla/) { print "на сайте появилось что мы ждем\n"; } а если говорить о чем-то более сложном, например "забрать файл по [rs]sh, посмотреть что в нем и сделать в зависимости от результата то-то или се-то" то в перле может уже получаться бааальшой код, а в шелле будут оставаться одна-две строки, причем в основном именно нужные действия. языки начинают рулить когда в шелле нет нужных кирпичиков или когда скорость важна становится :) -- . ''`. Dmitry E. Oboukhov : :’ : unera@debian.org `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Attachment:
signature.asc
Description: Digital signature