2010-07-27 19 views

Odpowiedz

12

Oczywiście. Polecenie open z trybem >&= pozwala otwierać uchwyty plików na dowolnych deskryptorach plików.

# 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 
+5

Oczywiście, jeśli chodzą nazywając uchwyty 'STDFOO' to niby cheapens cały "Std" rzeczy. :) – hobbs

+0

hobbs ma rację, ale myślę, że mobrule próbował wskazać, że STDOUT i STDERR są po prostu synonimami wyjścia na fd1 i fd2 po wyjęciu z pudełka, ale nawet to można zmienić, nie jest to zbyt rzadkie w punkcie skryptu STDERR do innego fd dla pliku, który został otwarty do pisania. – mikegrb

+0

'> &' 'dup's (tworzy nowy deskryptor pliku) i tworzy uchwyt pliku Perl z nowego deskryptora pliku. Powinieneś używać '> & =' do utworzenia uchwytu Perl dla istniejącego deskryptora pliku. Naprawiony. – ikegami

Powiązane problemy