Your problem is that you are using ^ in the beginning of your pattern. ^ matches the beginning of the string, but your whitespaces are not immediately after the beginning; there are letters in the way. Try something like:
$_ =~ s/\s+$//g;
That will remove all whitespace at the end of the string.