in reply to Make Spreadsheet::ParseXLSX be quiet about errors

Before attempting to redirect STDERR on your own, I would suggest a module like Capture::Tiny

my ($stdout, $stderr, @result) = capture { eval { Spreadsheet::ParseXLSX->new->parse("/tmp/invalid.xlsx") } };