Tôi đang cố gắng chuyển một kịch bản Perl từ Unix sang Windows nhưng có một thời gian gần như không thể làm cho nó hoạt động do các ống dẫn không được hỗ trợ trong chức năng mở. Dưới đây là các mã:Làm cách nào để tôi có thể sử dụng ống hút để hoạt động trong Perl trên Windows?
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;
}
Lỗi này là:
'-' is not recognized as an internal or external command,
operable program or batch file.
Có ai biết làm thế nào để làm cho công việc này? Cảm ơn!
Mike
Nếu cha mẹ chỉ ngồi chờ đợi đầu ra của đứa trẻ, tại sao lại là ngã ba? – Schwern
cho (kết quả $ i = 1; $ i <@ $; $ i ++) {in $ result -> [$ i]; } tốt hơn được viết dưới dạng shift @ $ result; in kết quả @ $; (vì bạn không sử dụng nó sau đó) hoặc in kết quả $ -> [$ _] cho 1 .. $ # result; Kiểu C cho các vòng lặp bắt đầu cho các lỗi off-by-one và thường được viết tốt hơn như một toán tử phạm vi. – Schwern