![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| Grounder |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
Всем привет.
Давно замечал, что интерпритатор Perl выполняет скрип как ему вздумается, а не так, как написано в скрипте. К примеру:
Так вот perl почему-то сначала выполнит весь цикл, а уж потом возьмётся за процедуру. Раньше это не особо напрягало, но вот сейчас мне требуется от него последовательность. Порылся в гугле, не нашёл ничего, как на русском, так и на английском. Кто сталкивался, подскажите пожалуйста как с ним бороться? |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 5 Всего: 27 |
А что у вас в erroranswer? Если просто print, то выключите буферизацию вывода.
Конечно-же это не так Это сообщение отредактировал(а) KSURi - 10.3.2009, 21:40 -------------------- Died at Life.pl line 21 |
|||
|
||||
| klem4 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 27.7.2008 Репутация: нет Всего: 2 |
Оффтоп
Работал у нас один кодер в конторе, так вот его вскоре уволили после того как она заявил что "у вас крон кривой". |
|||
|
||||
| Grounder |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
KSURi, хорошо, с принтом был не удачный пример, вот пример более приближённый к моей проблеме:
Как видно это тупой брутфорс, набросанный за 5 минут, но в нём есть одна особенность, он на каждую попытку открывает новое соединение. Если бы интерпретатор perl-а выполнял скрипт пошагово, он бы не открывал тысячи соединений одновременно, а ждал завершения предыдущего. Данная фишка проявляется как при выполнении скрипта, так и в режиме отладки. И конечно, если заменить второй цикл while на foreach ничего не поменяется. |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Grounder, Вы для меня открываете новые возможности Perl
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| Grounder |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
ginnie, скрипт в общем-то составлен для примера, но суть одна, есть клиент, который сидит в колхозе на диалапе и у него должен выполнится скрипт, который соединяется с десятком разных хостов. А из-за подобной фишки отрабатывается максимум одно-два соединения, а остальные вылетают по тайм-ауту.
Выяснил firewall-ом. Если важно, то запускал скрипт под виндой, но чувствую и под никсами будет тоже самое, т.к. раньше натыкался. |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Grounder, а если этот непослушный интерпретатор попросить выводить сообщения перед соединением, после соединения и после закрытия соединения, в какой последовательности они выведутся?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 1 Всего: 18 |
Grounder, dialup это и есть ваши проблемы
|
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
shamber, как dialup влияет на последовательность выполнения комманд интерпретатором?
Grounder ведь именно об этом говорит Это сообщение отредактировал(а) ginnie - 11.3.2009, 12:33 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 1 Всего: 18 |
ginnie,
|
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 5 Всего: 27 |
-------------------- Died at Life.pl line 21 |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
KSURi, меня тоже посетила мысль, что интерпретатор неадекватно выполняет неадекватно написанные скрипты
Это сообщение отредактировал(а) ginnie - 11.3.2009, 15:30 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| Grounder |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 10.3.2009 Репутация: нет Всего: нет |
KSURi, ginnie, можно узнать, в чём неадекват?
Если вы не знаете зачем я пишу undef, это не значит, что я его пишу просто так. Кстати, undef в данном случае работает как объявление переменной (вместо my $t=0;), при использовании strict, в некоторых случаях, требуется данное шаманство, да и просто я основные переменные выношу к началу процедуры, ради удобства. ginnie, нет, принтом дело не исправишь... В общем, я уже фактически решил проблему, но расписывать её здесь не вижу смысла. Здесь о таком не задумываются. |
|||
|
||||
| ginnie |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 6 Всего: 49 |
Grounder, чем, по Вашему, отличаются строчки
и
Grounder, если бы Вы в моем коде увидели
что бы вы подумали? Я и не говорил, что print() что-то исправит. Просто тогда были бы доказательства Ваших слов, а так получается пустая болтовня.
Искренне желаю успехов! Извините, что не смогли помочь! -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||||||||
|
|||||||||||
| pompei |
|
||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: нет Всего: 6 |
а я к конструкции:
отношусь вполне нормально - даже если для интерпретатора это масто масленное, то я более уверен что $x ======== undef Например я всегда пишу так:
вместо
а также пишу так
вместо
таким образом код становиться более читабельным (самодокументированным) и соответственно в нем возникает меньше ошибок а автору скажу что ошибка не в perl-е, а в чем-то другом (может наверное в ДНК) Это сообщение отредактировал(а) pompei - 12.3.2009, 07:14 --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |