当前位置:  开发笔记 > 编程语言 > 正文

如何在Windows上使用Perl分支分支管道?

如何解决《如何在Windows上使用Perl分支分支管道?》经验,为你挑选了1个好方法。

我正在尝试将一个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.

有谁知道如何使这项工作?谢谢!

麦克风



1> Jay..:

我知道这不是你问题的直接答案,但看起来你在Perl中用Perforce编写了一些东西?如果是这样,您可能会发现现有的库已经完成了您想要的工作,并为您节省了很多麻烦,或者至少为您提供了一些示例代码.

例如:

P4Perl

P4 ::服务器

P4 :: C4

编辑:现在我知道你正在做什么我猜你正试图将p42svn移植到Windows,或者至少让它与Windows兼容.有关确切问题的讨论,请参阅此主题.建议(未经测试)是尝试在" forking pipe open()尚未实现 " 下的http://perldoc.perl.org/perlfork.html中列出的代码示例,以显式创建管道.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有