2012-12-26 11 views

cevap

8

Legacy. Bazen eski modüller tarafından gerekli sözcükler yerine Globs, ama hepsi bu.

Düşündüm de
use IPC::Open3 qw(open3); 
open(local *CHILD_STDIN, '<', '/dev/null') or die $!; 
my $pid = open3(
    '<&CHILD_STDIN', 
    my $CHILD_STDOUT = gensym(), 
    my $CHILD_STDERR = gensym(), 
    $cmd, @args, 
); 

, ayrıca (Data::Alias lexicals ile yapabilirsiniz gerçi) takma ad oluşturmak için kullanabilirsiniz.

my $foo; 
our $bar; local *bar = \$foo; 
$foo = 123; say $bar; # 123 
$bar = 456; say $foo; # 456 
+0

Bu durumda doğrudan "$ CHILD_STDOUT" parametresini doğrudan iletirsem işe yaramayacağını mı kastediyorsunuz? –

+0

@new_perl, Stdout için, bu işe yarayacak, ancak stderr için değil. Ama aynı zamanda stdin için bir glob kullanılır. (Bu yeni bir adla her seferinde sadece '\ yerel * NAME', ama beri' gensym' hakkında konuşmak saçma.) O stderr'e için çalışmaz – ikegami

+0

Neden? –

İlgili konular