Question

Je suis en train de transférer un script Perl au-dessus de Unix à Windows, mais ai un temps presque impossible à le faire fonctionner en raison des tuyaux de bifurquent non pris en charge dans la fonction ouverte. Voici le code:

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'erreur est:

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

Quelqu'un sait comment faire ce travail? Merci!

Mike

Était-ce utile?

La solution

Je sais que ce n'est pas une réponse directe à votre question, mais il semble que vous scripting quelque chose au-dessus de Perforce en Perl? Si oui, vous trouverez peut-être une bibliothèque existante fait ce que vous voulez déjà et vous épargner beaucoup de maux de tête, ou tout au moins vous donner quelques exemples de code pour travailler.

Par exemple:

EDIT : Maintenant que je sais ce que vous faites, je devine que vous essayez de le port p42svn à Windows, ou plutôt le rendre compatible avec Windows au moins. Voir ce fil pour une discussion de cette question précise. La recommandation (non testé) est d'essayer les exemples de code figurant à http://perldoc.perl.org /perlfork.html sous " tuyau Forker open () non encore mis en œuvre " pour créer explicitement la conduite à la place.

Autres conseils

Il ne va pas travailler en l'état. Vous aurez besoin de trouver une autre méthode pour accomplir ce qu'il fait. Il ne semble pas comme il n'y a que la combustion d'un besoin de la fourche pipe, mais il est difficile de dire que je ne sais pas ce qu'est un p4 est et beaucoup de votre code est perdu à l'angle d'interprétation du support.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top