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

Hi Monks,

I was wondering whether it is possible to re-direct the output of TEST::MORE to a file.

My intention is when we use 'ok' option of Test::More, instead of displaying in the command prompt I want it to get redirected to a specified file.

Thanks for any help

  • Comment on Writing the output of test::more in to another file

Replies are listed 'Best First'.
Re: Writing the output of test::more in to another file
by arkturuz (Curate) on Mar 05, 2008 at 10:25 UTC
    The simplest way would be to redirect STDERR to STDOUT in BEGIN block:
    BEGIN { *STDERR = *STDOUT; }

    Now, you can redirect to some file with no problems:
    test.pl > results.txt

    Or you can invoke your program like:

    perl test.pl > foo.txt 2>&1
    It does the same thing (if you're on Unix-like OS).
      thanks that worked.

      In 'perl test.pl > foo.txt 2>&1'

      What "2>&1" is for? thanks

        You can read more about that in Bash Guide for Beginners, chapter 9. Here's a quote from that document that explains "1" and "2": Each open file gets assigned a file descriptor. The file descriptors for stdin, stdout, and stderr are 0, 1, and 2, respectively.

        So "2>&1" means: redirect stderr to stdout. See more examples in the guide.

Re: Writing the output of test::more in to another file
by j1n3l0 (Friar) on Mar 05, 2008 at 09:35 UTC
    Would a standard unix redirect not work?

    perl some_test.t > out_file.txt


    Smoothie, smoothie, hundre prosent naturlig!