Compare the differences in Linux and Solaris of the ENV environment variables.
Also, instead of new CGI::Session try CGI::Session->new. It *used* to be the same (and in most cases still is) but I've seen different behaviors among different platforms before. Not sure that is your problem, but it's a simple thing to check. I've also heard (Monks -- please correct me if I'm wrong) that it's just better programming practice because its considered "better OOP" to use the ->new method instead of using the new keyword... (Hopefully I worded that correctly)
Thanks for you suggestion.
I changed it to CGI::Session->new but still get the same error:
new(): failed: load(): couldn't retrieve data: retrieve(): couldn't lock '/tmp/cgisess_9635d822f1e213041b1bf81cd124bbb9': Bad file number at cgi_test.pl line 14.