Pregunta

Estoy tratando de puerto de un script Perl más de Unix a Windows, pero estoy teniendo un tiempo casi imposible conseguir que funcione debido a las tuberías que se bifurcan no admitidos en la función abierta. Aquí está el 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;
}

El error es:

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

¿Alguien sabe cómo hacer este trabajo? Gracias!

Mike

¿Fue útil?

Solución

Yo sé que no es una respuesta directa a su pregunta, pero parece que las secuencias de comandos que estés algo encima de Perforce en Perl? Si es así es posible encontrar una biblioteca existente hace lo que quiere ya y se ahorrará muchos dolores de cabeza, o al menos le da un código de ejemplo para trabajar.

Por ejemplo:

Editar : Ahora que sé lo que está haciendo que supongo que está tratando de puerto p42svn a Windows, o más bien que sea compatible con Windows por lo menos. Ver este hilo para una discusión de este problema exacto. La recomendación (no probado) es tratar los ejemplos de código que figuran en http://perldoc.perl.org /perlfork.html en " Bifurcando tubo abierto () todavía no se han aplicado " para crear explícitamente el tubo en su lugar.

Otros consejos

No va a funcionar como está. Tendrá que encontrar otro método para llevar a cabo lo que está haciendo. No parece que haya que quemar una necesidad de que el tenedor-pipe, pero es difícil de decir, ya no sé lo que es un p4 es y mucho de su código se está perdiendo a la interpretación soporte en ángulo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top