in reply to qx and STDERR?

qx// only captures the command's STDOUT, to get STDERR, you'd have to use the redirection you showed, although whether that works will be dependent on the exact system you're running on - see The problem of "the" default shell.

print qx(ffmpg -f s16le -i out.raw 2>&1); does not capture the output of the ffmpeg-command.

Unfortunately I can't reproduce that, qx/ffmpeg ... 2>&1/ works for me on my Linux system. You'll have to be more specific about what system you're on, what version of Perl, version of ffmpeg, etc.

I am aware that there are other ways to capture stderr

Unless this is a script where you're certain it will only be run on one machine and it doesn't need to be portable, I really, strongly recommend to use one of those alternative ways. I wrote about them here (in short, IPC::Run3 for short-lived subprocesses, and IPC::Run for longer-running ones, in case you need to interact with them, run them in the background, etc.).

Replies are listed 'Best First'.
Re^2: qx and STDERR?
by morgon (Priest) on Nov 25, 2019 at 19:54 UTC
    Yeah. The default shell seems to be a likely culprit.

    I am on Debian testing, perl 5.26.1 ffmpeg 4.2.1.

    It's not a big deal, I just would like to understand what is going on...

      I just would like to understand what is going on...

      The versions you named don't seem very exotic, and without being able to reproduce it, I can't tell you more. Is qx(ffmpg -f s16le -i out.raw 2>&1) the actual command you're running (is "ffmpg" a typo)? Because if you're doing any other redirections there, the order makes a difference. Otherwise, I'd suggest debugging with strace and perhaps lsof to get some clues why your redirection isn't working.