|laziness, impatience, and hubris|
The UNIX sysadmin in me cringes at the thought of a CGI running as root. Especially if it's coded by someone who by his own admission is new to unix and perl.
I would have the CGI take the needed info from the user, then call an external script to actually add the user dirs and such. Do NOT make it suid root. Use a package such as scmd or sudo to execute the script itself, and make SURE that the data passed to the script is good, ie, check for anything other than letters & digits.
Remember...good system admins are conscientious, the great ones are paranoid.
P.S. I can't find a link for scmd. It may be part of the ssh package, tho.