Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I've been using Test::Simple, Test::More, and the 'prove' command for writing/running test cases for my modules. But what is the Best Practice for testing end-user facing scripts? Should I write test cases which calls via system()/open()/etc, feed it input, and see what comes out with regular expressions? Assume for the sake of argument that operates in a unix-y way (ie, not interactive, takes in some input from stdin, does magic, and writes output to stdout).