Curses: проблемы с "newterm" при вызове его более одного раза - PullRequest
1 голос
/ 23 марта 2012
package My_Test;
use warnings; 
use strict;
use Curses;

sub routine {
    my $scr = newterm( $ENV{TERM}, \*STDERR, \*STDIN );
    set_term( $scr );
    noecho();     
    keypad( 1 ); 

    printw "press a key: ";
    refresh;
    my $c = getch();
    printw "$c\n";
    refresh;
    sleep 1;

    endwin();
    delscreen( $scr );
}

1;

Когда я запускаю этот скрипт

#!/usr/bin/env perl
use warnings;
use strict;
use My_Test;

My_Test::routine();
My_Test::routine();

, второй My_Test::routine выдает это сообщение об ошибке:

Use of uninitialized value in subroutine entry at My_Test.pm line 8.
argument 0 to Curses function 'set_term' is not a Curses screen at My_Test.pm line 8.

Почему эта подпрограмма работает только в первый раз?

1 Ответ

1 голос
/ 14 апреля 2012
package My_Test;

use strict;
use warnings; 
use Curses;

our $scr = newterm($ENV{TERM}, \*STDERR, \*STDIN);
set_term($scr);

sub routine {
    noecho();     
    keypad(1); 
    printw "press a key: ";
    refresh;
    my $c = getch();
    printw "$c\n";
    refresh;
    sleep 1;
    endwin();
}

1;
...