package MySession;
use strict;
use warnings;
my %SESSION;
my $TIMEOUT = 60;
sub new {
return bless {}, shift;
}
sub login {
my ($self, $username, $pw) = @_;
# ...
$SESSION{$username} = time;
return;
}
sub logged_in {
my ($self, $username) = @_;
if ($SESSION{$username} and time - $SESSION{$username} < $TIMEOUT) {
return 1;
}
return 0;
}
1;
use strict;
use warnings;
use 5.010;
use MySession;
my $session = MySession->new;
$session->login('foo', 'secret');
say $session->logged_in('foo');
say $session->logged_in('bar');
my $time = 61;
say "Waiting $time seconds to see what happens....";
sleep $time;
say $session->logged_in('foo');
say $session->logged_in('bar');