В оболочке 2>
означает редирект fileno 2. Fileno 2 - это всегда то, что программа видит как stderr. Аналогично, fileno 0 - это стандартный ввод, а fileno 1 - это стандартный вывод. Итак, когда вы говорите 2>&1
, вы говорите оболочке перенаправить stderr (fileno 2) в stdout (fileno 1). Поскольку оператор backticks использует оболочку для запуска указанной вами команды, вы можете использовать перенаправление оболочки, поэтому
my $foo = `curl yadda yadda 2>&1`;
говорит curl перенаправить вывод в stdout, и поскольку оператор обратного канала перехватывает stdout, вы получаете то, что искали.