#!/usr/bin/perl -w use strict; use CGI qw(-oldstyle_urls :standard); use CGI::Carp qw(fatalsToBrowser); use File::Find; use File::stat; use Time::localtime; my $mytime=(time); my $file_stat; my $dir_session = "../sessions"; print header(); opendir(DIR, $dir_session) or die "Couldn't open directory, $!"; while (my $sessions = readdir DIR) { if($sessions=~ /^cgisess_[a-f0-9]{32}$/) { CGI::Session->find( \&purge ); } } closedir DIR; sub purge { my ($session) = @_; next if $session->is_empty; # <-- already expired?! if ( ($session->ctime + 60*55) <= time() ) { $session->delete(); $session->flush(); # Recommended practice says use flush() after delete(). } }