in reply to Re^3: How to capture and verify STDOUT of a Perl Module
in thread How to capture and verify STDOUT of a Perl Module

I know, but if system() runs something that produces output, I want it captured and can't:
system("/bin/echo HELLO");

Replies are listed 'Best First'.
Re^5: How to capture and verify STDOUT of a Perl Module
by Loops (Curate) on Jul 29, 2013 at 19:31 UTC
    Why not:
    my $capture = qx{echo HELLO};
      You suggest I change the code under test so that the test passes? Module calls system for a reason so that the user sees the output.
Re^5: How to capture and verify STDOUT of a Perl Module
by 2teez (Vicar) on Jul 29, 2013 at 21:20 UTC

    I know, but if system() runs something that produces output, I want it captured and can't:
    Not so!!. Because system is not what you want to use to capture the output from a command use backticks or qx has it has been shown by others.
    Then you can test your output if you want.

    If you tell me, I'll forget.
    If you show me, I'll remember.
    if you involve me, I'll understand.
    --- Author unknown to me
      Ok, I wanted to capture output from a call to a class method. Class method produces output by various means: print, system etc. Test::Output ties STDOUT and captures the calls to print and printf. As such it misses everything else including output from system(). I switched to Capture::Tiny and everything is great.