Вы хотите, чтобы пользователь мог
Проблема
Вы хотите, чтобы пользователь мог отредактировать строку перед тем, как отсылать ее вам для чтения.
Решение
Воспользуйтесь стандартной библиотекой Term::ReadLine в сочетании с модулем Term::ReadLine::Gnu с CPAN:
use Term: .'ReadLine;
$term = Term: :Readl_ine->new("APP DESCRIPTION"); $OUT = $term->0UT || *STDOUT;
$term->addhistory($fake_line); $line = $term->readline(PROMPT);
print $0UT "Any program output\n";
Комментарий
Программа из примера 15.4 работает как простейший командный интерпретатор. Она читает строку и передает ее для выполнения. Метод read line читает строку с терминала с поддержкой редактирования и вызова истории команд. Вводимая пользователем строка автоматически включается в историю команд.
Пример 15.4. vbsh
#!/usr/bin/perl -w
# vbsh - очень плохой командный интерпретатор
use strict;
use Term::ReadLine;
use POSIX qw(:sys_wait_h);
my $term = Term: :Readl_ine->new("Simple Shell"); my $0UT = $term->0UT() || *STDOUT; my $cmd;
while (defined ($cmd = $term->readline('$ ') )) { my ©output = '$cmd'; my $exit_value = $? » 8; my $signal_num = $? & 127; my $dumped_core = P & 128; printf $OUT "Program terminated with status %d from signal %d%s\n",
$exit_value, $signal_num,
$dumped_core "> " (core dumped)" : ""; print ©output;
$term->addhistory($seed_line); }
Чтобы занести в историю команд свою строку, воспользуйтесь методом
addhistory:
$term->addhistory($seed_line);
В историю нельзя заносить больше одной строки за раз. Удаление строк из истории команд выполняется методом remove_history, которому передается индекс в списке истории: 0 соответствует первому (самому старому) элементу, 1 — второму и т. д. до самых последних строк.
$term->remove_history($line_number);
Для получения списка истории команд используется метод GetHistory:
©history = $term->GetHistory;
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий