I haven't used it, but I think that Net::SSH::Perl might be helpful. It looks like it lets you SSH to a remote server and issue commands while being able to retrieve the STDOUT, STDERR and exit code of commands that were issued.
It should be simple to create a subroutine that uses this module to connect to a remote server, change the password, and log out. Then all you would need to do is call that for each server in your list. Might not be 100% what you're looking for, but I don't think that there would be whole lot of work to use this for your task.