STOP! If all you want to do is write a test script, consider using Test::Simple. Test::Harness is the module that reads the output from Test::Simple, Test::More and other modules based on Test::Builder. You don't need to know about Test::Harness to use those modules. Test::Harness runs tests and expects output from the test in a certain format. That format is called TAP, the Test Anything Protocol. It is defined in Test::Harness::TAP. Test::Harness::runtests(@tests) runs all the testscripts named as arguments and checks standard output for the expected strings in TAP format. The prove utility is a thin wrapper around Test::Harness.