Since you are using perl already to generate the new names, just do the rename in perl:
find . -maxdepth 1 -type d -print0 |
perl -0nE '$o=$_; s/\s+/_/g; rename $o, $_'
You could also use the new-fangled /r and do:
perl -0nE '$n=s'rename $_, s/\s+/_/gr; rename $_, $ngr or die "$_: $!"'\n"'