Do the passwords have the same special characters on the different machines. Some "special" characters are treated differently inside double quotes. To avoid that use single quotes.$ssh->send( 'rootpasswordwithspecialcharacters' . "\n" );
The single quotes are used to protect that characters in the root password. The newline is then concatenated to the end, since \n depends on being in double quotes.