Nếu bạn đang sử dụng hệ thống giống Unix, hãy sử dụng tiện ích tee.
$ perl -le 'print "Hello, world"' | tee /tmp/foo /tmp/bar
Hello, world
$ cat /tmp/foo /tmp/bar
Hello, world
Hello, world
Để thiết lập trùng lặp này từ bên trong chương trình của bạn, thiết lập một đường ống từ STDOUT
của bạn đến một bên ngoài quá trình tee. Chuyển số "|-"
đến open
giúp việc này dễ dàng thực hiện.
#! /usr/bin/env perl
use strict;
use warnings;
my @copies = qw(/tmp/foo /tmp/bar);
open STDOUT, "|-", "tee", @copies or die "$0: tee failed: $!";
print "Hello, world!\n";
close STDOUT or warn "$0: close: $!";
Demo:
$ ./stdout-copies-demo
Hello, world!
$ cat /tmp/foo /tmp/bar
Hello, world!
Hello, world!
Nguồn
2012-05-09 16:03:26
OP ở đâu yêu cầu thay thế 'STDOUT' (... và với cái gì? 0_o). OP muốn "chuyển hướng luồng' STDOUT' tới hai tệp ". –
Bằng 'select'ing' $ tee', '$ tee' trở thành xử lý mặc định. TIMTOWTDI, cho dù bạn có thích hay không. –
Tôi thực sự rất mù. Xóa các bình luận sai của tôi! – ikegami