Name="Term::Cap in Perl" Stich="Term Cap Term::Cap getc Trick perl" Zeit="Sam Jun 23 10:51:57 MEST 2001" Kurz="Sie wollen ein Perl-Programm schreiben, welches die Position des Cursors verändern können soll und einzelne Buchstaben von <STDIN> lesen soll, ohne dass der Benutzer mit <CR> bestätigen muss." Lang=" Folgender Code hilft: `exCodes Beispiel 'für' eine Term::Cap-Benutzung` require Term::Cap; ### Die Term::Cap wird require POSIX; ### initialisiert my \$termios = new POSIX::Termios; \$termios->getattr; my \$ospeed = \$termios->getospeed; # Old-style ioctl code to get ospeed: # require 'ioctl.pl'; # ioctl(TTY,\$TIOCGETP,\$sgtty); # (\$ispeed,\$ospeed) = unpack('cc',\$sgtty); \$terminal = Tgetent Term::Cap { TERM => undef, OSPEED => \$ospeed }; \$terminal->Trequire(qw/ce ku kd/); sub inikey { ### Sub für getc if (\$BSD_STYLE) { system "stty cbreak /dev/tty 2>&1"; } else { system "stty", '-icanon', 'eol', "\001"; } } sub endkey { ### Hebt inikey's if (\$BSD_STYLE) { ### Wirkung wieder auf system "stty -cbreak /dev/tty 2>&1"; } else { system "stty", 'icanon', 'eol', '^@'; # ASCII null } print "\n"; } sub getkey { ### Bloßes getc getc(STDIN); } sub pufkey { ### getc - aber diesmal until (getkey) {} ### wird abgewartet, bis } ### der Nutzer ### gedrückt hat sub draw {} ### Dummy für das ### rekursive Aufrufen sub draw { ### Das verbesserte my (\$mxko, \$myko, \$mch) = (shift, shift, shift); ### print if (length(\$mch) == 1) { print \$terminal->Tgoto('cm', \$mxko, \$myko, \$FH); print \$terminal->Tpad(\$mch, 1, \$FH); # Für's Spiele programmieren folgende Zeile auskommentieren: # print \$terminal->Tgoto('cm', \$mxko, \$myko, \$FH); } elsif (length(\$mch) > 1) { for(\$i = 0; \$i <= length(\$mch); \$i++) { draw \$mxko + \$i, \$myko, substr(\$mch, \$i, 1); } } } `exCodee` Benutzt werden kann das Programm dann wiefolgt: `exCodes Benutuzng` inikey; ### Initialisierung \$key = pufkey; ### Einen Tastendruck ### abfragen draw 5, 5, "#"; ### Fünf Zeichen von ### oben und von links ### ein # zeichnen endkey; ### Prompt wieder ### benutzbar machen `exCodee` " case $1 in Name) echo $Name; exit;; Stich) echo $Stich; exit;; Zeit) echo $Zeit; exit;; Kurz) echo $Kurz; exit;; Lang) echo $Lang; exit;; esac # if [ "$1" = "Name" ]; then echo $Name; fi mself_vA="txt/0022.txt txt/0028.txt txt/0031.txt txt/0039.txt txt/0049.txt txt/0051.txt txt/0053.txt txt/0089.txt"