#!/usr/bin/perl -w use POSIX; use Term::Cap; use Time::HiRes qw( usleep ); my $setterm = '/usr/bin/setterm'; my $x = 40; my $y = 12; my $xdir = 1; my $ydir = 1; my $maxx = 77; my $maxy = 22; my $tailcount = 15; my $xx = 0; my $yy = 0; #system("$setterm -cursor off"); init(); clear_screen(); while ( 1 ) { gotoxy($x,$y); print "."; usleep(20000); if (@xtail >= $tailcount) { $xx = shift(@xtail); $yy = shift(@ytail); gotoxy($xx,$yy); print " "; } push(@xtail,$x); push(@ytail,$y); $xdir = -1 if ($x > $maxx); $xdir = 1 if ($x < 1); $ydir = -1 if ($y > $maxy); $ydir = 1 if ($y < 1); $x = $x + $xdir; $y = $y + $ydir; gotoxy(0,0); print "X: $x, $xdir, $xx / Y: $y, $ydir, $yy "; } sub clear_screen { $tcap->Tputs('cl', 1, *STDOUT) } sub gotoxy { my($x, $y) = @_; $tcap->Tgoto('cm', $x, $y, *STDOUT); } sub init { $| = 1; #$delay = (shift() || 0) * 0.005; my $termios = POSIX::Termios->new(); $termios->getattr; my $ospeed = $termios->getospeed; $tcap = Term::Cap->Tgetent ({ TERM => undef, OSPEED => $ospeed }); $tcap->Trequire(qw(cl cm cd)); }