http://qs321.pair.com?node_id=843971


in reply to How to Test Output from the Standard Output

See also Test::Output. This provides some utility functions to do exactly this.
use strict; use Test::Output; use Test::More tests => 1; use Test_Package; stdout_is( sub{Test_Package->testing()}, 'okay', 'Testing okay');

Replies are listed 'Best First'.
Re^2: How to Test Output from the Standard Output
by Khen1950fx (Canon) on Jun 10, 2010 at 10:18 UTC
    Test::Output is interesting, but I had to make a few adjustments to get it to work. I took Grandfather's script, added a test from Test::Output.
    package Test_Package; use strict; sub testing { print "okay"; }; 1; use strict; use Test::Output; use Test::More tests => 4; my $log; open my $logFile, '>', \$log; my $oldStdOut = select $logFile; Test_Package->testing(\$log); select $oldStdOut; close $logFile; stdout_is {print "okay"} "okay", "STDOUT okay"; is('okay', 'okay'); is($log, 'okay'); is($log, 'okay', 'testing okay');