You want a user to be able to edit a line before sending it to you for reading.
Use the standard Term::ReadLine library along with the Term::ReadLine::Gnu module from CPAN:
use Term::ReadLine; $term = Term::ReadLine->new("APP DESCRIPTION"); $OUT = $term->OUT || *STDOUT; $term->addhistory($fake_line); $line = $term->readline($prompt); print $OUT "Any program output\n";
The program in Example 15-4 acts as a crude shell. It reads a line and passes it to the shell to execute. The readline method reads a line from the terminal, with editing and history recall. It automatically adds the user's line to the history.
If you want to seed the history with your own functions, use the addhistory method:
$term->addhistory($seed_line);
You can't seed with more than one line at a time. To remove a line from the history, use the remove_history method, which takes an index into the history list. 0 is the first (least recent) entry, 1 the second, and so on up to the most recent history lines.
$term->remove_history($line_number);
To get a list of history lines, use the GetHistory method, which returns a list of the lines:
@history = $term->GetHistory;
The documentation for the standard Term::ReadLine module and the Term::ReadLine::Gnu from CPAN
15.10. Reading Passwords | 15.12. Managing the Screen |
Copyright © 2003 O'Reilly & Associates. All rights reserved.