I looked at the source for CGI::Session and CGI::Session::File. The error is originating from CGI::Session::File::remove which is called when a deleted session is DESTROYed. However, the session you just created was never saved, so there's no file to delete yet. So, instead of deleting the new sessions (or trying to), I'd just make sure it never gets saved:
... if ( $session->is_new() ) { # Make CGI::Session think no save is needed # by simulating a call to flush. $session->{_STATUS} = &CGI::Session::SYNCED; # Make sure we don't use the session by accident. undef $session; } else { ...
Other solutions:
... if ( $session->is_new() ) { $session->flush(); # Force it to be saved before it's deleted. $session->delete(); } else { ...
and
... if ( $session->is_new() ) { $session->delete(); eval { undef $session; }; } else { ...
In reply to Re^2: Code works fine, but in subroutine does not... help plz!
by ikegami
in thread Code works fine, but in subroutine does not... help plz!
by Stenyj
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |