map{$_ && s/\s.*//} $server,$user,$passwd,$dbconn,$dbuser,$dbpasswd,$s
+hpath;
Map goes through the trouble of creating and returning a result for you. If you don't intend to use that result, you should probably not use map for the purpose.
I would do this instead:
s/\s.*// foreach ($server,$user,$passwd,$dbconn,$dbuser,$dbpasswd);
$shpath =~ s/\s+.*// if $shpath;
I'm on the fence about treating $shpath separately. There's no reason to test all the variables (according to the OP code), just the $shpath variable. So testing all the other values is wasted CPU cycles. On the other hand, CPU cycles may not be important in this situation.