#!/usr/bin/env perl use strict; use warnings; use autodie; use Spreadsheet::ParseXLSX; my $original_stderr; eval { open $original_stderr, '>&', \*STDERR; open STDERR, '>&', \*STDOUT; Spreadsheet::ParseXLSX->new->parse('invalid.xlsx'); 1; } or do { my $err = $@; print $err; }; open STDERR, '>&', $original_stderr; warn "Now back to normal STDERR\n";