Очистить уже напечатанные значения с помощью Perl - PullRequest
1 голос
/ 06 февраля 2012

Мне нужно очистить напечатанные значения в окне консоли Perl.Например, Примечание: я разрабатываю это в ОС Windows.

use strict;

my $mode;

Initialize();

sub Initialize{
    print "Enter 1 or 2";
    $mode=<STDIN>;
    chomp($mode); 
    check_mode($mode);
}

sub check_mode{
    if(($mode!=1) and ($mode!=2)){
        print "invalid selection";
        Initialize();
    }
    else{
        print "valid selection";
        sleep 5;
   }
}

При вводе неправильного выбора я вызвал функцию Initialize, она снова печатает.Но я хочу, чтобы при вызове функции она удаляла уже напечатанное значение в окне консоли и снова печатала.Возможно ли это?

Пожалуйста, дайте ваши ценные предложения.

Ответы [ 2 ]

2 голосов
/ 06 февраля 2012

Несмотря на то, что вы можете использовать символ возврата на клавишу «\ b» для удаления символов в текущей строке, это имеет ограничения, так как, когда пользователь нажимает клавишу ввода, он будет печатать перевод строки, и ваши символы возврата не будут переноситься назад, чтобы стеретьпредыдущая строка.

См. Win32 :: Console , которая должна позволить вам распечатать приглашение в фиксированном месте, а затем перезаписать неправильный выбор, или вы можете получить ввод по одному символу за разиспользуя метод InputChar и подавить перевод строки ...

1 голос
/ 06 февраля 2012

для конкретных оконных ОС и ОС Linux

system($^O =~ /win/i ? 'cls' : 'clear');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...