WWW::Mechanize is of course one of the indispensable tools for any web programmer or admin. The current problem is the proliferation of 3rd party subclasses, the functionalities of which cannot be used together. So you want a polite Mechanize which does self-rate-limiting and uses the Firefox or IE engine? A subclass exists for each feature, but how do you use them together? WWW::Mechanize needs to be more role/plugin-oriented instead of inheritance-oriented.
In general, it does the job very well, and has a reasonably well rounded API.
However, it has a few problems. One small problem, and one medium problem.
The small problem is that in some ways the API can be a little thin. It does the essentials, but sometimes it's lacking a convenience method here or there that would just make using it that much cleaner.
The medium problem is the test suite. It does the job if you are a normal unix situation, with a normal setup.
However, sometimes the test suite generates false failures because it hasn't been built sufficiently robustly.
It uses an internal test server that fails on strange and interesting platforms, like Windows, and it seems to assume a real connection to the Internet, and fails if it can't connect.
The situation is slowly improving, but it still fails on 5.6, it fails a lot on cygwin, and it fails periodically on Win32 native.
Any module with literally hundreds of other modules depending on it shouldn't fail ANYWHERE, under ANY circumstances.
This lets down an otherwise excellent module, and so I tend to reach for vanilla LWP::UserAgent more often that I would like, simply for the improved compatibility, safety, and robustness.
This looks like an excellent package, but I've never been able to get a version which passed the tests on the Windows or Linux boxes I've used. So I'll have to disagree with the comments that this should be a replacement for LWP::UserAgent. The fact that this package often (but not always) fails tests on certain platforms makes me reticent to require it for an application.
Oh, Mechanize, how do I love thee? Let me count the ways: *****
I used to think, "I guess Mechanize is OK if you're into that sort of thing." Then I realized that getting into that sort of thing would save me endless hours. A WWW::Mechanize script need not be much more than: "go to this page; click that link; fill out the form as follows; submit; print the result from that paragraph." It just does what you want, quickly and easily.
A very nice high level interface that wraps up functionality provided by LWP::UserAgent. If you need to programmatically interact with websites WWW::Mechanize is a great choice. It's especially useful for automated testing of web applications.
WWW::Mechanize is a better module than plain LWP::UserAgent to automate WWW scripts. You should be able to use it in every place you were using LWP::UserAgent if that's not possible file a bug in WWW::Mechanize.
WWW::Mechanize gets the job done in simple steps.