in reply to uninitialized value in concatenation

Well those sound to me like warnings (do you have use warnings or a -w on your #! line?) The reason you are getting them doesn't seem to be immediatly clear. Its possible that you queries are doing because you have the variables interpolated in the string of your query.

A much better way to do that is to use placeholders. Placeholders keep your code cleaner and easier to maintain and it also allows the DBI module to filter out dangerous characters from variables passed to the program. You create a placeholder by using a ? instead of the variable name and then putting the variable in your execute statement. Part of your code would look like this:

if ($parent eq "Father") { $sub_parent = "Mother"; $sth = $dbh->prepare ("select Father from Roster where User = +?); $sth->execute($user) or die $sth->errstr; # putting 'or die $sth->errstr;' will tell you if # your query fails and why $name = $sth->fetchrow_array; } #end if Father

That may or may not take care of the warnings. But even if it doesn't its a good practice.

Hope that helps
Chris