My job some days could almost be described as "automation wizard." So, along with Perl, I've been doing the Expect thing since 1998. In fact, Don Libes's Expect book from O'Reilly is the only O'Reilly book I've ever read all the way through. (It's a fascinating read and will really educate you about the thrill of UNIX. Interesting tidbits lurk on every page that you will find useful even if you never touch Expect or TCL. An absolute must read for a UNIX programmer.)
Of course, I've wanted to get my automation stuff into Perl since forever. Maybe actually since 1999, the year I moved into Perl 5 and CPAN. There's a lot of options. There's been an Expect.pm for a long time. Net::Telnet is also often cited as a solution. More recently, I discovered IO::React and felt that it did a better job than any of the others in offering the interface I wanted. Of course, those of you who've been here longer than me remember chat.pl and other things, although no one talks about them now.
For a short while I thought IO::React was going to be it, the wonderful solution I'd been waiting for to start doing this kind of thing in Perl. But it never really took off, (or at least, I never really took off using it). Then, the good thing I'm referring to in the title of this entry happened. Roland Giersig took up where the previous author of Expect.pm had left off. Suddenly Expect.pm did a lot more than I remembered it doing, and it looked a lot more like Perl.
Roland is putting out betas of Expect.pm and supporting modules every time I turn around. There's a sourceforge mailing list where I've received help several times. Roland's also been very receptive to feature requests and patches. In the past few days, the expectperl mailing list has exploded with activity (relatively speaking, since it's still a small list). There's Roland, answering questions, taking suggestions, proposing solutions, and cranking out beta releases. I'm just drinking it all in, constantly learning and thrilled to be able to start adding Expect.pm to my arsenal of automation tools. Around here, I'm starting to make the TCL/Expect stuff go away.
On top of everything, Roland has announced that Don Libes is starting to work on the next generation Expect, which will build on the knowledge accumulated in the years since Expect was created, and will come in the form of an embeddable library designed for use in multiple "scripting" languages including Perl/Python/TCL. So the next generation Expect.pm will probably be an XS module wrapped around the real expect. Of course, by then we'll have Perl 6 and XS will be history, but that's another kettle of fish.
So, Roland Giersig and Expect.pm rock my world. If you ever have to automate interactive programs, consider letting them rock yours.
Oh, and if you don't have the Rhesus monkey book, get it. There are some things in that book that will probably never be out of date.