[Perl]Linux终端下的屏幕保护程序
时间:2006-09-07 来源:huhuegg
#!/usr/bin/perl
#ver: v0.1
#author: huhuegg
#date: 2006-09-07 16:50
#mail: [email protected] use strict;
use Term::Screen;
use Term::ReadPassword; $SIG{INT}=sub {sleep 2;};
#default passwd => 'aaa'
my $def="aaa"; &screenwait; #sub#
sub screenexit () {
print "exit screensave!\n";
system("clear");
exit;
} sub screenwait () {
my $time=0;
while (1) {
my $return;
my $scr0 = new Term::Screen;
#clear screen
$scr0->clrscr();
if (!($scr0->key_pressed())) {
#output screensave line
&screensave($time);
$time=$time+2;
sleep 2;
} else {
eval { system('stty -raw echo'); };
$return=&passwd();
if ($return eq "ok") {
&screenexit;
} else {
$time=0;
}
}
}
} sub screensave () {
my @time=@_;
my $scr = new Term::Screen;
if (!defined($scr)) {
die "new Term::Screen error!\n";
}
$scr->clrscr();
my $y=rand(60);
my $x=rand(120);
$scr->at($x,$y)->bold()->puts("$time[0] sec no input!")->normal();
} sub passwd () {
#my $password = read_password('password: ');
my $password = eval {$SIG{ALRM}=sub {return "timeout"};alarm(5);read_password('password: ');};
alarm(0);
chomp $password;
if ($@ =~ /timeout/) {
return "error";
} else {
if ("$password" eq "$def") {
#print "-";
return "ok";
} else {
#print "--";
return "error";
}
}
}
#ver: v0.1
#author: huhuegg
#date: 2006-09-07 16:50
#mail: [email protected] use strict;
use Term::Screen;
use Term::ReadPassword; $SIG{INT}=sub {sleep 2;};
#default passwd => 'aaa'
my $def="aaa"; &screenwait; #sub#
sub screenexit () {
print "exit screensave!\n";
system("clear");
exit;
} sub screenwait () {
my $time=0;
while (1) {
my $return;
my $scr0 = new Term::Screen;
#clear screen
$scr0->clrscr();
if (!($scr0->key_pressed())) {
#output screensave line
&screensave($time);
$time=$time+2;
sleep 2;
} else {
eval { system('stty -raw echo'); };
$return=&passwd();
if ($return eq "ok") {
&screenexit;
} else {
$time=0;
}
}
}
} sub screensave () {
my @time=@_;
my $scr = new Term::Screen;
if (!defined($scr)) {
die "new Term::Screen error!\n";
}
$scr->clrscr();
my $y=rand(60);
my $x=rand(120);
$scr->at($x,$y)->bold()->puts("$time[0] sec no input!")->normal();
} sub passwd () {
#my $password = read_password('password: ');
my $password = eval {$SIG{ALRM}=sub {return "timeout"};alarm(5);read_password('password: ');};
alarm(0);
chomp $password;
if ($@ =~ /timeout/) {
return "error";
} else {
if ("$password" eq "$def") {
#print "-";
return "ok";
} else {
#print "--";
return "error";
}
}
}
相关阅读 更多 +
排行榜 更多 +