jakiś czas temu dosyć przypadkowo dowiedziałem się o istnieniu modułu io::prompt.
gdy zacząłem go używać, nie był jeszcze widoczny “tak po prostu" w cpanie, trzeba było instalować przez install DCONWAY/IO-Prompt-
od tamtej pory moduł został już całkiem upubliczniony i wystarczy install IO::Prompt w shellu cpanowym by móc sie nim cieszyć.
co dokładnie moduł oferuje? uproszczone wprowadzanie danych.
czyli tak naprawdę co?
tak naprawdę do sporo. trzeba by poczytać mana by wszystko ogarnąć, ale tak z grubsza pokażę:
$ perl -e 'use IO::Prompt; my $q = prompt "się nazywasz, ? "; print "[$q]\n"'
miłe. zwracam uwagę, że $q nie ma znaku “enter" na końcu – prompt autoamtycznie chompuje. da się to wyłączyć oczwiście.
$ perl -e 'use IO::Prompt; my $q = prompt -p => "hasło: ", -e => "*"; print "[$q]\n"'
hmm .. proste i przyjemne wprowadzanie hasła. bez znajomości trybów terminali itd.
$ perl -e 'use IO::Prompt; my $q = prompt -p => "hostname: ", -d => "localhost"; print "[$q]\n"'
domyślna wartość odpowiedzi 🙂
$ perl -e 'use IO::Prompt; my $q = prompt -p => "wybierz: ", -m => ["depeche mode", "guns n roses", "metallica"]; print "[$q]\n"'
proste menu.
$ perl -e 'use IO::Prompt; my $q = prompt -p => "ile masz lat: ", -i; print "[$q]\n"'
prościutka walidacja typu – czy to integer.
możliwości jest więcej. można wstawiać własne walidatory odpowiedzi. można czyścić ekran przed pytaniem. można przyjmować wartości z stdin lub wymuszać przyjmowanie tylko z terminala (co powoduje, że nie działa coś jak echo 12 | perl -e …), można przyjmować tylko pojedynczy znak, można nawet emulować działanie wolnej linii transmisyjnej między kompem a klawiaturą.
w pełni polecam każdemu kto kiedykolwiek napisać coś co musiało odpytywać usera o cokolwiek na konsoli.