my $err_file = "error.log"; open(ERRLOG, "+>>logs/system/$err_file") or die "Could not open logfile:$!\n"; flock(ERRLOG,2); # Was *STDERR = *ERRLOG; my $child = open(STDERR, '|-'); if ($child < 0) { die "Could not fork: $!\n" } if ($child == 0) { while (<>) { printf ERRLOG '%s %s', scalar(localtime), $_; } exit 0; } print "One\n"; print STDERR "Foo\n"; print "Two\n"; print STDERR "Bar\n"; # and ends with: flock(ERRLOG,8); close(ERRLOG);