my $LOG_FILE = "$HOME/log/test.txt"; open(LOG, "> $LOG_FILE") || die "Can't redirect stdout"; open (CMD, "ls |"); while () { lprint ($_) } close(CMD); sub lprint () { my ($line) = @_; print LOG $line; print $line; } #### From: open (CMD, "ls |"); To: open (CMD, "ls_non_command |");