Plack-Middleware-Mirror is a project mainly written in Perl, it's free.
Save responses to disk to mirror a site
=head1 Plack::Middleware::Mirror
This middleware will save the content of the response in a tree structure reflecting the URI path info to create a mirror of the site on disk.
See module POD for more information.
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Randy Stauner.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
=cut