Pergunta

Eu estou tentando porta um script Perl ao longo do Unix para o Windows, mas estou tendo um tempo quase impossível fazê-la funcionar devido aos tubos que se bifurcam não suportados na função Open. Aqui está o código:

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;
}

O erro é:

'-' is not recognized as an internal or external command,
operable program or batch file.

Alguém sabe como fazer este trabalho? Obrigado!

Mike

Foi útil?

Solução

Eu sei que não é uma resposta directa à sua pergunta, mas parece que você está scripting algo em cima do Perforce em Perl? Se assim você pode encontrar uma biblioteca existente faz o que você já quer e salvar um monte de dores de cabeça, ou pelo menos dar-lhe um código de exemplo para trabalhar.

Por exemplo:

Editar : Agora que eu sei que você está fazendo Eu estou supondo que você está tentando p42svn porta para o Windows, ou melhor, torná-lo compatível com o Windows, pelo menos. Consulte esta discussão para uma discussão deste problema exato. A recomendação (não testado) é tentar as amostras de código listados no http://perldoc.perl.org /perlfork.html em " bifurcação da tubulação open () ainda não implementado " para criar explicitamente o tubo em seu lugar.

Outras dicas

Não vai para o trabalho como está. Você terá que encontrar outro método para realizar o que ele está fazendo. Não parece que há que queima uma necessidade para o garfo-pipe, mas é difícil dizer desde que eu não sei o que a P4 é e um monte de seu código está sendo perdido para interpretação cantoneira.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top