in reply to dbmopen - if db file do this else do that

I don't know how this works on MACs but for PC and *N*X you don't need to specify the extension at all; it will be appended automatically.

I'm guessing your problem is related to the following (rather strange) piece of code:
if ( (open FILE, "${sessionFile}.db"){ close FILE; dbmopen %stored, $sessionFile, 0655; %session = %stored; dbmclose %stored; return 1; } else {; return 0; }
Are you trying to make sure that the DBM file exists before opening it? If so, you can do it in a somewhat more portable way:
sub sessionValidate{ my ($session, $file) = @_; my %stored; return 0 unless dbmopen %stored, $file, 0444; %$session = %stored; dbmclose %stored; }
This way you let the library deal with naming conventions. Note also that I changed your subroutine to not use global variables. You can call it as follows:
if ( sessionValidate(\%session, "$systemRoot/sessions/$FORM{sessionI +D}") ){ # ... }else{ # ... }
--perlplexer