我需要清除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功能,它再次打印。但是,我想要的是在调用函数时它应该在控制台窗口中删除已经打印的值,它应该再次打印。有可能吗?
请提出宝贵的建议。
答案 0 :(得分:2)
虽然你可以使用退格字符代码“\ b”来删除当前行上的字符,但这有一些限制,因为当用户点击输入时它会打印换行符,你的退格字符将不会带回来删除上一行。
请参阅Win32::Console,它允许您在固定位置打印提示,然后覆盖错误的选择,或者您可以使用InputChar方法一次输入一个字符并禁止换行...
答案 1 :(得分:1)
特定于window os和linux os
system($^O =~ /win/i ? 'cls' : 'clear');