Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Трабла с print в цикле, print ничего не пишет, пока нет \n 
V
    Опции темы
Perl_sapiens
Дата 4.3.2008, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Вот некий код:
Код

# это только пример кода, но суть не меняется
foreach $x (@list) {
print ".";
    foreach $x2 (@list2) { 
        $x=~ s/\n//;
        $x2=~s/\n//;
        print  "\n$x - $x2\n";
    }
}

В краце, суть кода такая: выводить ".", которые символизируют работу скрипта. Но вот трабла в том, что они не выводятся, пока не будет выведен символ \n. По идее так не должно быть, но это факт.

Скажите, в чем может быть проблема?
PM MAIL   Вверх
KSURi
Дата 4.3.2008, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Код

$| = 1;

Попробуйте добавить это в начало скрипта


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
shamber
Дата 4.3.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(Perl_sapiens @  4.3.2008,  00:01 Найти цитируемый пост)
Скажите, в чем может быть проблема?


Буферизация.
PM MAIL Jabber   Вверх
Perl_sapiens
Дата 4.3.2008, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



KSURi, а что эта переменная делает?
PM MAIL   Вверх
shamber
Дата 4.3.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Ссоори , что не KSURi smile
Буферизацию отключает smile
PM MAIL Jabber   Вверх
KSURi
Дата 4.3.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Данные выводятся не сразу по поступлению в специальный буфер, а накапливаются там и выводятся порциями.
Чтобы отключить данную особенность, можно "взвести" специальную переменную:
(perldoc perlvar)

Цитата

HANDLE->autoflush(EXPR)
$OUTPUT_AUTOFLUSH
$|
    If set to nonzero, forces a flush right away and after every write or print on the currently selected output channel. Default is 0 (regardless of whether the channel is really buffered by the system or not; $| tells you only whether you've asked Perl explicitly to flush after each write). STDOUT will typically be line buffered if output is to the terminal and block buffered otherwise. Setting this variable is useful primarily when you are outputting to a pipe or socket, such as when you are running a Perl program under rsh and want to see the output as it's happening. This has no effect on input buffering. See getc in the perlfunc manpage for that. (Mnemonic: when you want your pipes to be piping hot.)


P.S.: еще можно воспользоваться ф-ями sysread/write, которые работают в обход стандартной буферизации, но делать этого не стоит, если вы не уверены в том, что вам это действительно нужно.

Это сообщение отредактировал(а) KSURi - 4.3.2008, 15:55


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0498 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.