Hallo,
mein Problem besteht darin, einen Stringauszugeben, der durch den Benutzer aenderbar ist und er ihn mittels [ENTER] an den STDIN schickt.
quasi so:
chomp($neuername=(<> <$altervorname)); # geht so nicht :(
Ich will also dem STDIN schon etwas uebergeben, das durch den User geaendert werden kann.
Danke im Vorraus
Mohk
User since
2003-08-04
12208
Artikel
Admin1
ich glaube, mohk meint da was anderes. ein string, der ausgegeben wird und vom user mittels
backspace-taste geändert werden kann. nicht trivial, also so eine art shell-funktion etwa?
du musst mittels Term::Readkey jeden einzelnen tastendruck abfragen und dann richtig
darauf reagieren, d.h. bei backspace machst du z.B. ein print "\b"
User since
2003-08-04
5873
Artikel
ModeratorIn
Du könntest ein kleines Tk-Fenster mit einem Entry-Widget öffnen, in dem der alte Inhalt schon selektiert ist. Dann kann man ihn überschreiben oder ändern...wenn dieser Weg in Frage kommt, kann ich ein kleines Beispielprogramm posten.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
Wenn bei dir die Readline-Lib unterstuetzt wird:
#!/usr/bin/perl
use strict;
use warnings;
use Term::ReadLine;
my $str = "foobar";
my $term = Term::ReadLine->new ('ReadLine Test');
$term->addhistory ($str);
do {{
$str = $term->readline ('Bitte irgendwas eingeben: ', $str);
last unless $str;
print "Sie haben $str eingegeben.\n";
$term->addhistory ($str); # Eingabe zur ReadLine-History hinzufuegen
}} while $str;
User since
2003-09-16
6
Artikel
BenutzerIn
Sorry das ich jetzt erst antworten kann, meine mail war etwas langsam :) # passwd vergessen
@Bubu: sorry, aber dein code bestaetigt meinen verdacht, das das nciht geht! da foobar, bei mir zumindest , nich in der history erscheint!
Um das nochmal klar zu definieren: gewuenscht ist ein STDIN mit vorgegebenem Inhalt.
Quasicode: $readln=(<STDIN>="foobar"); # geht nicht, da handle nicht schreibbar :)
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
Tja, Pech.
Bei mir funktioniert der Code von oben genau so, wie du es wolltest.
(Perl 5.8.1 mit Term::ReadLine und Term::ReadLine::Gnu unter Linux 2.4.21)
User since
2003-08-04
7321
Artikel
ModeratorIn
bei mir läufts auch:
This is perl, v5.8.0 built for MSWin32-x86-multi-thread
Term::Readline ist in der Standard Distri dabei!
User since
2003-11-28
3645
Artikel
ModeratorIn
[quote=esskar,23.Jan..2004, 06:05]bei mir läufts auch:
This is perl, v5.8.0 built for MSWin32-x86-multi-thread
Term::Readline ist in der Standard Distri dabei![/quote]
Term::ReadLine schon, aber ohne Term::ReadLine::GNU oder Term::ReadLine::Perl bekommt man die ganzen schoenen Zusatzfeatures nicht.