use warnings; use strict; my $buildlog = 'fred.txt'; open (my $pipe, '-|', 'nmake -f TEST.mak CFG="TEST - Win32 Solaris_Release" 2>&1') || die "Unable to run nmake: $!"; open(my $log, '>', $buildlog) || die "Can't open $buildlog: $!"; while (<$pipe>) { print; print $log $_; } close ($pipe); close ($log); my $status = $?; ...