Всем спасибо, нашёл решение.
Оказываеться существует модуль
CGI::Session::ExpireSessions, который как раз и создан для удаления просроченых сессий.
Лежит он
тут Если кому то интересно, то реализация следующая:
Т.к. я не админ сервера, где я тестирую скрипт, то установить этот модуль(а он не стандартный) на сервер я не могу. Поступил общеизвестным способом. А именно файл модуля положил в папку с основным скриптом.
#В теле основного скрипта подключил его:
use expiresessions;
#Далее соединяемся с БД:
my $db_user_name = \'имя_пользователя\';
my $db_password = \'пароль\';
my $dsn = \'DBI:mysql:имя_БД:хост\';
my $dbh = DBI->connect($dsn, $db_user_name, $db_password)|| die "Error while conecting to DB: $DBI::errstr()";
#А далее всего одной строкой избавляемся от мёртвых сессий.
CGI::Session::ExpireSessions -> new(dbh => $dbh, verbose => 0) -> expire_db_sessions(delta=>1, table_name=>\'kr_sessions\');
#Где:
#dbh => $dbh дискриптор соединения с БД
#delta=>1 критерий удаления, на сколько просрочена сессия в секундах.
#table_name=>\'kr_sessions\' имя таблицы, если оно отлично от \'sessions\'Ну вот вроде бы и всё. Если есть вопросы, коментарии пишите.
ПС интересно почему предедущий код не работает?