8
出於好奇,是否可以在Perl腳本中創建,實例化或以其他方式訪問除STDOUT和STDERR之外的其他輸出緩衝區?Linux/Perl:除STDOUT和STDERR之外的其他輸出緩衝區?
用例將./doublerainbow.pl 3>full_on.txt 4>all_the_way!.txt
出於好奇,是否可以在Perl腳本中創建,實例化或以其他方式訪問除STDOUT和STDERR之外的其他輸出緩衝區?Linux/Perl:除STDOUT和STDERR之外的其他輸出緩衝區?
用例將./doublerainbow.pl 3>full_on.txt 4>all_the_way!.txt
絕對是附加輸出到管中的文件或其他命令,例如。帶有>&=
模式的open
命令允許您打開任意文件描述符的文件句柄。
# perl 4fd.pl > file1 2> file2 3> file3 4> file4 5< file5
open STDFOO, '>&=3';
open STDBAR, '>&=4';
open STDBAZ, '<&=5'; # works for input handles, too
print STDOUT "hello\n";
print STDERR "world\n";
print STDFOO "42\n";
print STDBAR <STDBAZ>;
$ echo pppbbbttt > file5
$ perl 4fd.pl >file1 2>file2 3>file3 4>file4 5<file5
$ cat file1
hello
$ cat file3
42
$ cat file4 file2
pppbbbttt
world
當然,如果你四處調用句柄'STDFOO'它那種貶低整個「性病」的事情。 :) – hobbs 2010-07-27 21:56:04
hobbs是對的,但我認爲mobrule試圖指出,STDOUT和STDERR只是fd1和fd2輸出的同義詞,但即使可以更改,在腳本點STDERR內也不是很少見到另一個文件的fd,這個文件已經被寫入。 – mikegrb 2010-07-28 02:49:37
'>&''dup's(創建一個新的文件描述符)並從新的文件描述符創建一個Perl文件句柄。您應該使用'>&='爲現有的文件描述符創建一個Perl句柄。固定。 – ikegami 2014-04-18 17:59:13