Hi,
I want to display a set of values on screen and update that value every 5 seconds. I don't want to clear the screen.
eg:
hours: 1
mins : 30
sec: 45
here, values should change accordingly.
How should i do that in Perl?
Regards, Anandan
Hi,
I want to display a set of values on screen and update that value every 5 seconds. I don't want to clear the screen.
eg:
hours: 1
mins : 30
sec: 45
here, values should change accordingly.
How should i do that in Perl?
Regards, Anandan
Are you talking about getting more control over where things are printed on your screen? Then you probably want to check out the Term::Cap module.
A poor man's way to do this on one line is to use \r
to keep overwriting the same line.
while ($t>0) {
# note no new line at the end of printf statement
printf "\rHours: %d Minutes: %d Seconds: %d ", $t/3600, ($t/60)%60, $t/60;
sleep 5;
$t -= 5;
}
EDIT Here's something that works on my system. Your terminal's capabilities may vary.
require Term::Cap;
$terminal = Tgetent Term::Cap { TERM => cygwin, OSPEED => 9600 };
$terminal->Trequire("ku"); # move cursor up
$UP = $terminal->Tputs("ku");
$t = 500;
while ($t > 0) {
printf "Hour: %d \n", $t/3600;
printf "Minute: %d \n", ($t/60)%60;
printf "Second: %d \n", $t%60;
print $UP,$UP,$UP;
sleep 5;
$t -= 5;
}
Something like this:
use Term::ANSIScreen qw(cls);
while(1) {
cls;
print "....";
sleep 5;
}
Alternatives of "cls" can be found in this question.
For this sort of thing I like to use Curses. It's just not for Perl, either. :)