my $outfile = 'infile'; my @cmd = ("mafft", "--auto", "--phylipout", "--reorder", "$file.fasta" ); open my $out_fh, '>', $outfile or die "open($outfile, w) failed: $!"; open( my $pipe, '-|', @cmd ) or die sprintf "Could not open pipe from '%s': $!", join( ' ', @cmd); while ( my $line =<$pipe> ) { print $out_fh $line or die "Write to '$outfile' failed: $!"; } close $pipe; close $out_fh or die "close($outfile) failed: $!";