Jeśli używasz systemu uniksowego, użyj narzędzia tee.
$ perl -le 'print "Hello, world"' | tee /tmp/foo /tmp/bar
Hello, world
$ cat /tmp/foo /tmp/bar
Hello, world
Hello, world
Aby skonfigurować tę powielania z poziomu programu, założyć rurkę z STDOUT
do zewnętrznego tee procesu. Przekazywanie "|-"
do open
ułatwia to zadanie.
#! /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!
Gdzie OP poprosił o zastąpienie 'STDOUT' (... i czym? 0_o). OP chciał "przekierować strumień' STDOUT' na dwa pliki ". –
Poprzez 'select'ing' $ tee', '$ tee' staje się domyślnym uchwytem. TIMTOWTDI, czy ci się to podoba, czy nie. –
Naprawdę jestem naprawdę ślepy. Usuwanie moich fałszywych komentarzy! – ikegami