I got it to work in my board:
1. I didn't use form_data at all, just "%DATA = map{$_ => param($_)} param(); #map is your friend!" (it was commented before).
2. $user_number = &GetUserNumber($user); - notice $user_number and $user.
3. if ($user_number ne "") { - since $ProfileNumber doesn't exist, see #2.
4. @user_profile = &OpenProfile("$user_number"); - without .cgi
5. $pubname = &GetPubName($user_number); - get public name.
6.
I think that's all

good job, demo:
http://www.lkubb.dns2go.com/?ubb=digichat .