Test::Cmd provides a framework for portable, automated testing of executable commands and scripts (in any language, not just Perl), especially those that interact with the file system. In addition to running tests and evaluating conditions, the Test::Cmd module manages and cleans up temporary workspace directories, and provides methods for creating files and directories from in-line data (here-documents).
Test::Class provides a simple way of creating classes and objects to test your Perl code in an xUnit style. Built using Test::Builder, it was designed to work with other Test::Builder-based modules. You can easily package your tests as classes/modules rather than *.t scripts. This simplifies reuse, documentation, and distribution, encourages refactoring, and allows tests to be extended by inheritance.