Thread Ist es möglich, eine STDIN-Aufforderung unwirksam zu machen? (7 answers)
Opened by Kuerbis at 2014-04-23 14:54

hlubenow
 2014-04-23 17:41
#174941 #174941
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Mit dem Term::ReadKey-Modul kann man ungeblockt Tasten einlesen.
Die Eingabe eines Returns wie beim geblockten Lesen (von STDIN) kann man z.B. so simulieren:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use warnings;
use strict;

use Term::ReadKey;
ReadMode 4;
warn "Warning message!";
print "Press ENTER";
while (1) {
    my $key = ReadKey(-1);
    unless(defined $key) {$key = "";}
    if ($key eq "\n") {
        last;
    }
}
ReadMode 0;

Man hat dann aber anders als bei normalem Lesen von STDIN recht gute Kontrolle, ob es bei der Eingabe hängenbleiben oder unmittelbar weitergehen soll. (Ich benutze das z.B. in meinem Skript "shufflemp3-0.8.pl".)

Ansonsten (etwas zu hoch für mich):
http://www.perlmonks.org/?node_id=344201
Im Prinzip ist STDIN wohl nicht zum Schreiben gedacht. Daher kann man nur mit einigen Anstrengungen z.B. ein "\n" nachträglich hineinbringen.
Last edited: 2014-04-23 17:45:36 +0200 (CEST)

View full thread Ist es möglich, eine STDIN-Aufforderung unwirksam zu machen?