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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Alarm 
:(
    Опции темы
GShadrin
  Дата 18.10.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не могу понять почему не печатает "NUPIM\n";
Код

eval 
        {
            local $SIG{ALRM} = sub { die "alarm\n" }; 
            alarm  10;
            $new_comand_line=<STDIN>;
            alarm 0;
        };    
        if ($@) 
        {
            print "NUPIM\n";
            $new_comand_line="noop\n";        
        } 
        else 
        {
            if  (lc $new_comand_line eq "noop\n") 
            {
                print_in_coding("\n......\n");
                $new_comand_line="\n";
            }
        }


Я не верно использую аларм?
почему не происходит выполнение блока
Код

{
            print "NUPIM\n";
            $new_comand_line="noop\n";        
        } 
?
PM MAIL   Вверх
DaemonSuw
Дата 18.10.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



а можете поподробнее описать что вы хотите сделать)...
блок 

Код

if ($@) {}

выполняется когда произошла ошибка в eval {} блоке, где в переменную $@ попадает сама ошибка...
я считаю что в блоке исключительной ситуации произойти не может!
Код

            local $SIG{ALRM} = sub { die "alarm\n" }; 
            alarm  10;
            $new_comand_line=<STDIN>;
            alarm 0;


PM MAIL ICQ   Вверх
GShadrin
Дата 18.10.2009, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я хочу чтобы если через 10 секунд пользователь не введет строку а переменную $new_comand_line записалось слово 'noop' и управление передавалось дальше.
пользовался этой статьей http://valera.asf.ru/perl/help/name.php?name=alarm
PM MAIL   Вверх
shamber
Дата 18.10.2009, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



А система у Вас какая?
насколько я помню под Windows alarm неработает/криво работает.

Там проблема с блокирующим вызовом STDIN. Я в свое время, когда у меня вставала проблема с этим решил ее установкой модуля Term::Getch. Ставиться из ppm без проблем.

Как-то так smile
Код

    use Term::Getch;
     my $start_time = time;

    while(time-$start_time < 10) {
        my $c = getch(); 
        print "Input: $c\r";
    }
    
    print "Error :) You so slow" ;


Мысли буржуинов на эту тему 
Код

I got this to work great on UNIX, but not on Windows. It seems that alarm() works on Windows (perl 5.8+)...
but not for all scenarios. For example, this works:

Код

eval {
  local $SIG{ALRM} = sub { die "alarm\n" };
  alarm 5;
  sleep 100;
};
alarm 0;

Код

But, this does not:

Код


eval {
  local $SIG{ALRM} = sub { die "alarm\n" };
  alarm 5;
  print "Remark: ";
  chomp($remark = <STDIN>);
};
alarm 0;

Код

I wonder if it has something to do with waiting for <STDIN>?

Like I said, both scenarios above work on UNIX, but only the first works on Windows.


Это сообщение отредактировал(а) shamber - 18.10.2009, 23:23
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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