我正在尝试将一个Perl脚本从Unix移植到Windows,但是由于open函数中不支持的分支管道,我几乎不可能将它运行起来.这是代码:
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 =; close(P4_OUTPUT) or die "Close failed: ($?) $!"; return $content; }
错误是:
'-' is not recognized as an internal or external command, operable program or batch file.
有谁知道如何使这项工作?谢谢!
麦克风
我知道这不是你问题的直接答案,但看起来你在Perl中用Perforce编写了一些东西?如果是这样,您可能会发现现有的库已经完成了您想要的工作,并为您节省了很多麻烦,或者至少为您提供了一些示例代码.
例如:
P4Perl
P4 ::服务器
P4 :: C4
编辑:现在我知道你正在做什么我猜你正试图将p42svn移植到Windows,或者至少让它与Windows兼容.有关此确切问题的讨论,请参阅此主题.建议(未经测试)是尝试在" forking pipe open()尚未实现 " 下的http://perldoc.perl.org/perlfork.html中列出的代码示例,以显式创建管道.