Why convert to perl if expect is working for you? (non rhetorical)
Sidenote.. This seems like playing with fire. Why have a machine alter a root pw? This is something one may desire if a machine's root pw changes on cron- synched via something else- say.. the new random pw is sent via some secure method to users every day/update-cycle.
If instead this is a method to change multiple machine root pws from one other machine.. What are we trying to protect here? Access to the systems, or to the data the systems access? If it's to the data the systems access- maybe one system alone should have access directly- to that data- the other systems can maybe network mount/smb(samba) mount the partitions/shares remotely .. ?
(Hm.. just imagining here- You probably already considered all of these things and more.)