use strict; use File::Find; use constant SESSION_DIR => '/temp/'; find( \&wanted, SESSION_DIR ); sub wanted { return unless /^cgisess_(.*)/; open( FILE, SESSION_DIR . $_ ) or die "Cannot open session $1: $!"; my $data; { local $/; $data = ; } close( FILE ); my $D; eval( $data ); if ( time() >= $D->{ _SESSION_ETIME } + $D->{ _SESSION_ATIME } ) { unlink( SESSION_DIR . $_ ) or die "Cannot delete session $1: $!"; print "$1\n"; } }