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
: :’ : [EMAIL PROTECTED]
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
signature.asc
Description: Digital signature

