URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 12364
[ Назад ]

Исходное сообщение
"OpenNews: Perl для начинающих в примерах"

Отправлено opennews , 04-Окт-05 20:27 
Открылся новый сайт perlmeme.org (http://perlmeme.org/) для начинающих программировать на языке Perl.  Представлены ответы на часто возникающие вопросы, заметки, описание конструкций с примерами кода, демонстрации кода для таких операций как сортировка, работа с БД, парсинг разных форматов  и т.д.

URL: http://perlmeme.org/
Новость: http://www.opennet.me/opennews/art.shtml?num=6185


Содержание

Сообщения в этом обсуждении
"Perl для начинающих в примерах"
Отправлено Mikk , 04-Окт-05 20:27 
Ну-у... сайт-то на английском :-(
На английском начинающим и Learning Perl почитать неплохо.

"Perl для начинающих в примерах"
Отправлено Аноним , 05-Окт-05 13:22 
>Ну-у... сайт-то на английском :-(
>На английском начинающим и Learning Perl почитать неплохо.

Прелесть ресурса в примерах, там можно не зная английский многим вещам научиться.


"Perl для начинающих в примерах"
Отправлено northbear , 04-Окт-05 23:38 
Нормально-нормально, не все же такие неучи как вы. А знание аглийского еще не означает однозначного знаня Perl'а... :)

А то некоторые переводы, особенно для начинающих... :(( Таких переводчиков нужно убивать пока они еще маленькие. Сами бы попробовали чему-нибудь научиться по результатам своих творений. А потом люди думают, что программирование это страшно и ужасно...


"Perl для начинающих в примерах"
Отправлено пингвин , 05-Окт-05 00:29 
Но это действительно страшно и ужасно... жалею что изучал программирование, а не искусство бонсай например =\

"Perl для начинающих в примерах"
Отправлено acronym , 05-Окт-05 01:14 
perl-то perlом, ему не убудет. Вот зачем 2 запятые пропустил? Разве так надо?
Жалей сначала, что не доизучал язык, на котором выражаешься:]

"Perl для начинающих в примерах"
Отправлено аноним , 05-Окт-05 06:08 
Там все примеры начинаются строкой #!/usr/bin/perl
Уж лучше с man perlintro начинать изучать Perl, там первая строка #!/usr/bin/env perl

"Perl для начинающих в примерах"
Отправлено Los , 05-Окт-05 08:13 
Важно не то, что пишете в первой строке: это от типа shell зависит, а что пишете во второй и последующих.

"Perl для начинающих в примерах"
Отправлено аноним , 05-Окт-05 11:11 
То, что пишется в первой строке тоже важно. Perl пока что не является частью POSIX и поэтому совсем не обязательно должен находиться в /usr/bin. Хороший стиль программирование, в частности правильное написание первой строки, лучше выработать в себе изначально.

"Стиль мешает производительности"
Отправлено Аноним , 05-Окт-05 13:21 
>/usr/bin. Хороший стиль программирование, в частности правильное написание первой строки, лучше
>выработать в себе изначально.

Вам нужно на каждый запуск скрипта тратить ресурсы на запуск программы env ? Мне нет, поэтому всегда буду писать #!/usr/bin/perl



"Стиль мешает производительности"
Отправлено аноним , 05-Окт-05 14:02 
> Вам нужно на каждый запуск скрипта тратить ресурсы на запуск программы env ? Мне нет, поэтому всегда буду писать #!/usr/bin/perl

Мне нужны портабельные скрипты. На запуск программы env тратится примерно столько же ресурсов, как на запуск Hello world. При случае посмотрите её исходники. Не понимаю, почему многочисленные дистроклепатели не устанавливали perl в /usr/local/bin изначально. Если бы они так делали, не было бы сейчас никаких проблем писать #!/usr/local/bin/perl везде и всегда.


"Стиль мешает производительности"
Отправлено Аноним , 05-Окт-05 14:26 
>Мне нужны портабельные скрипты. На запуск программы env тратится примерно столько же
>ресурсов, как на запуск Hello world. При случае посмотрите её исходники.

Сами посмотрите, env по тупому пытается делать execv во всех "bin" директориях, и поверьте запуск из /usr/bin там не на первом месте. Загрузка от лишнего fork на этом фоне меркнет.

strace env blablabla 2> strace.log

$ grep exec strace.log |wc
28  

$ grep open strace.log |wc
37  

"Hello world" говорите ?


"Стиль мешает производительности"
Отправлено аноним , 05-Окт-05 20:45 
Я не знаю в какой системе вы это проверяли и почему в Вашем strace.log так много вызовов exec и open. Полагаю, что это проблема Вашей системы, а не Perl. Вот какие результаты я получил в FreeBSD 6.0-BETA5:

> truss -o truss.out env aaaa
env: aaaa: No such file or directory
> cat truss.out
mmap(0x0,3600,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 671535104 (0x2806d000)
munmap(0x2806d000,0xe10)                         = 0 (0x0)
__sysctl(0xbfbfe728,0x2,0x28069998,0xbfbfe724,0x0,0x0) = 0 (0x0)
mmap(0x0,32768,(0x3)PROT_READ|PROT_WRITE,(0x1002)MAP_ANON|MAP_PRIVATE,-1,0x0) = 671535104 (0x2806d000)
issetugid()                                      = 0 (0x0)
open("/etc/libmap.conf",0x0,0666)                ERR#2 'No such file or directory'
open("/var/run/ld-elf.so.hints",0x0,00)          = 4 (0x4)
read(0x4,0xbfbfe6f0,0x80)                        = 128 (0x80)
lseek(4,0x80,SEEK_SET)                           = 128 (0x80)
read(0x4,0x28072000,0x56)                        = 86 (0x56)
close(4)                                         = 0 (0x0)
access("/lib/libc.so.6",0)                       = 0 (0x0)
open("/lib/libc.so.6",0x0,00)                    = 4 (0x4)
fstat(4,0xbfbfe730)                              = 0 (0x0)
read(0x4,0x280688e0,0x1000)                      = 4096 (0x1000)
mmap(0x0,880640,(0x5)PROT_READ|PROT_EXEC,(0x20002)MAP_NOCORE|MAP_PRIVATE,4,0x0) = 671567872 (0x28075000)
mprotect(0x28133000,4096,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mprotect(0x28133000,4096,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
mmap(0x28134000,20480,(0x3)PROT_READ|PROT_WRITE,(0x12)MAP_FIXED|MAP_PRIVATE,4,0xbf000) = 672350208 (0x28134000)
mmap(0x28139000,77824,(0x3)PROT_READ|PROT_WRITE,(0x1012)MAP_ANON|MAP_FIXED|MAP_PRIVATE,-1,0x0) = 672370688 (0x28139000)
close(4)                                         = 0 (0x0)
sysarch(0xa,0xbfbfe7a0)                          = 0 (0x0)
mmap(0x0,344,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 672448512 (0x2814c000)
munmap(0x2814c000,0x158)                         = 0 (0x0)
mprotect(0x28075000,782336,(0x7)PROT_READ|PROT_WRITE|PROT_EXEC) = 0 (0x0)
mmap(0x0,22152,(0x3)PROT_READ|PROT_WRITE,(0x1000)MAP_ANON,-1,0x0) = 672448512 (0x2814c000)
munmap(0x2814c000,0x5688)                        = 0 (0x0)
mprotect(0x28075000,782336,(0x5)PROT_READ|PROT_EXEC) = 0 (0x0)
sigprocmask(0x1,0x28068820,0xbfbfe770)           = 0 (0x0)
sigprocmask(0x3,0x28068830,0x0)                  = 0 (0x0)
execve("/sbin/aaaa",<missing argument>,<missing argument>)
execve("/sbin/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
execve("/bin/aaaa",<missing argument>,<missing argument>)
execve("/bin/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
execve("/usr/sbin/aaaa",<missing argument>,<missing argument>)
execve("/usr/sbin/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
execve("/usr/bin/aaaa",<missing argument>,<missing argument>)
execve("/usr/bin/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
execve("/usr/games/aaaa",<missing argument>,<missing argument>)
execve("/usr/games/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
execve("/usr/local/sbin/aaaa",<missing argument>,<missing argument>)
execve("/usr/local/sbin/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
execve("/usr/local/bin/aaaa",<missing argument>,<missing argument>)
execve("/usr/local/bin/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
execve("/usr/X11R6/bin/aaaa",<missing argument>,<missing argument>)
execve("/usr/X11R6/bin/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
execve("/home/user/bin/aaaa",<missing argument>,<missing argument>)
execve("/home/user/bin/aaaa",<missing argument>,<missing argument>) ERR#2 'No such file or directory'
write(2,0xbfbfe2b0,5)                            = 5 (0x5)
write(2,0xbfbfe2d0,4)                            = 4 (0x4)
write(2,0x2812d264,2)                            = 2 (0x2)
write(2,0xbfbfe2b0,26)                           = 26 (0x1a)
exit(0x7f)                                      
process exit, rval = 32512

Как видете, в наихудьшем случае количество вызовов execve() равно количеству путей в PATH и до /usr/local/bin можно добраться всего за 6 вызовов execve(). Я не вижу тут какого-то особенного использования ресурсов. Тоесть от использования env(1) гораздо больше пользы чем вреда. Поэтому рекомендации авторов perlintro вполне уместны и полезны. Повторяю, бардак с размещением perl устроен дистроклепателями. Вот пусть они с ним и разбераются - перемещают perl в /usr/local/bin или делают там симлмнк на него. Почему из-за них нормальные системы должны поддерживать нестандартное размещение программ?


"Стиль мешает производительности"
Отправлено Anonymous , 05-Окт-05 22:07 
Cтоп-стоп, а от куда ядро знает где команда env лежит ? Насколько я помню после #! по стандарту должен быть полный путь к интерпретатору, а env - это хак. Из огня да в полымя получается.

"Стиль мешает производительности"
Отправлено аноним , 06-Окт-05 03:57 
Как откуда? После #! полный к путь env как раз и прописывается:
#!/usr/bin/env perl

"Perl для начинающих в примерах"
Отправлено deskpot , 05-Окт-05 13:03 
хе. а помните, какой флейм был зимой во freebsd-stable по поводу возможности выброса симлинка который /usr/bin/perl by default?

если не помните -- рекомендую почитать. там и статистика по перл-скриптам и то, насколько древнее каждое из выражений (perl vs sh vs env) и много чего интересного.

начать можно отсюда: http://lists.freebsd.org/pipermail/freebsd-perl/2005-January...


"Perl для начинающих в примерах"
Отправлено krz , 05-Окт-05 12:16 
жаль что на русском таких вещей малова-то. Буквально недавно наткнулся на подобное, но вот незадача - отсканировали книжку с кучей сиволов, смотришь в примеры и ужасаешся толи это регулярное выражение, толи плохо распознаные сиволы, всё таки на буржуйском читать гораздо приятнее.

"Perl для начинающих в примерах"
Отправлено Simon Taylor , 06-Окт-05 15:55 
> жаль что на русском таких вещей малова-то.
> Буквально недавно наткнулся на подобное, но вот
> незадача - отсканировали книжку с кучей сиволов,
> смотришь в примеры и ужасаешся толи это гулярное > выражение, толи плохо распознаные сиволы, всё
> таки на буржуйском читать гораздо приятнее.

Здравствулте!

(Hello)

Мы смотрим для людей имеют хорошее вникание английского и русского. Мы хотим перевести некоторые из наших страниц на http://www.perlmeme.org в другие языки, such as русский, Отношения,

Портной Simon

(We are looking for people who have a good understanding of English and Russian.

We want to translate some of our pages at
http://www.perlmeme.org into other languages,
such as Russian,

Regards,

Simon Taylor)

simon@unisolve.com.au


"Perl для начинающих в примерах"
Отправлено anonym , 06-Окт-05 20:58 
А почему бы, господа, хая переводчиков самим не примкнуться к переводчикам? Время тратить жалко видимо. Так вот пока толковые люди не будут уделять подобным проектам внимания так оно и будет. Ситуация с ошибками в переводе помню натыкался и в c++, правда есть такая мудрость у писателей подобных обучающих программингу материалов - спецом давать грабли, чтобы чердак слетал и кругом шел и тема усваивалась.