Thread Curses Problem... (3 answers)
Opened by J-jayz-Z at 2005-05-14 18:18

J-jayz-Z
 2005-05-14 18:18
#54877 #54877
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi, ich habe 2 scripte, die das selbe machen _sollten_.
Wobei das eine geht und das andere(dummerweise das meiner Meinung nach elegantere...) nicht.
Also erstmal die beiden codes:
Code1:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/perl
use strict;
use warnings;

use Curses;
use Curses::Widgets;
use Curses::Widgets::TextField;

my $widget;

my $mwh = new Curses;
noecho();
curs_set(0);

WIDGET:
my $widget = Curses::Widgets::TextField->new({
Y => 4,
X => 14,
COLUMNS => 20,
MAXLENGTH => 30,
FOREGROUND => 'green',
BACKGROUND => 'blue',
BORDERCOL => 'black',
BORDER => 1,
CAPTION => 'Ihre Eingabe',
CAPTIONCOL => 'yellow',
});

$widget->draw($mwh, 0);
$widget->execute($mwh);

if ($widget->getField('VALUE') eq "exit")
{
endwin();
exit 0;
} else {
goto WIDGET;
}

das geht!

Code2:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/perl
use strict;
use warnings;

use Curses;
use Curses::Widgets;
use Curses::Widgets::TextField;

my $widget;

my $mwh = new Curses;
noecho();
curs_set(0);

do
{
my $widget = Curses::Widgets::TextField->new({
Y => 4,
X => 14,
COLUMNS => 20,
MAXLENGTH => 30,
FOREGROUND => 'green',
BACKGROUND => 'blue',
BORDERCOL => 'black',
BORDER => 1,
CAPTION => 'Ihre Eingabe',
CAPTIONCOL => 'yellow',
});

$widget->draw($mwh, 0);
$widget->execute($mwh);

} while ($widget->getField('VALUE') ne "exit");

endwin();
exit 0;

das geht nicht...
Da bekomm ich nach dem Drücken der Eingabetaste folgendes:
Code: (dl )
Can't call method "getField" on an undefined value at ./text.pl line 16.

Kann mir jemand sagen, wieso das nicht geht, bzw. eine bessere Lösung (ohne goto) geben?
thx schonmal!
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de

View full thread Curses Problem...