use strict; use warnings; use IPC::Cmd qw( run ); my $tool = 'tar'; my $cmd = [ $tool, 'xvzf', $in_filename ]; my $buffer = ''; my @out = run( command => $cmd, buffer => \$buffer, verbose => 1 ); die "Error extracting $in_filename: $buffer" unless $out[0];