Unix'den Windows'a bir Perl betiği yüklemeye çalışıyorum, ancak açık işlevde desteklenmeyen forking boruları nedeniyle çalışmasını neredeyse imkansız hale getiriyorum.Windows'ta Perl'de çalışmak için boruları nasıl sorabilirim?
sub p4_get_file_content {
my $filespec = shift;
return 'Content placeholder!' if ($options{'dry-run'});
debug("p4_get_file_content: $filespec\n");
local *P4_OUTPUT;
local $/ = undef;
my $pid = open(P4_OUTPUT, "-|");
die "Fork failed: $!" unless defined $pid;
if ($pid == 0) { # child
my $p4 = p4_init();
my $result = undef;
$result = $p4->Run('print', $filespec);
die $p4->Errors() if $p4->ErrorCount();
if (ref $result eq 'ARRAY') {
for (my $i = 1; $i < @$result; $i++) {
print $result->[$i];
}
}
$p4->Disconnect();
exit 0;
}
my $content = <P4_OUTPUT>;
close(P4_OUTPUT) or die "Close failed: ($?) $!";
return $content;
}
hatadır:
'-' is not recognized as an internal or external command,
operable program or batch file.
kimse bu işi yapmak nasıl biliyor mu İşte kod? Teşekkürler!
Mike
Eğer ebeveyn çocuğun çıktısını beklerken etrafta oturacaksa, neden çatalım? – Schwern
için (benim $ i = 1; $ i <@ $ sonuç; $ i ++) {print $ sonuç -> [$ i]; } daha iyi shift @ $ sonuç olarak yazılır; @ $ sonucu yazdır; (bundan sonra kullanmıyor olduğunuzdan) veya $ sonucu yazdıralım -> [$ _] için 1 .. $ # sonuç; Döngüler için C stili, bire bir hatalar için yalvarır ve genellikle bir menzil operatörü olarak yazılır. – Schwern