使用perl清除已打印的值

时间:2012-02-06 07:42:29

标签: perl

我需要清除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 个答案:

答案 0 :(得分:2)

虽然你可以使用退格字符代码“\ b”来删除当前行上的字符,但这有一些限制,因为当用户点击输入时它会打印换行符,你的退格字符将不会带回来删除上一行。

请参阅Win32::Console,它允许您在固定位置打印提示,然后覆盖错误的选择,或者您可以使用InputChar方法一次输入一个字符并禁止换行...

答案 1 :(得分:1)

特定于window os和linux os

system($^O =~ /win/i ? 'cls' : 'clear');