Sto provando a eseguire il porting di uno script Perl da Unix a Windows ma sto avendo un tempo quasi impossibile per farlo funzionare a causa dei tubi forking non supportati nella funzione open. Ecco il codice:Come posso ottenere biforcazioni tubi per funzionare in Perl su Windows?
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'errore è:
'-' is not recognized as an internal or external command,
operable program or batch file.
Qualcuno sa come fare questo lavoro? Grazie!
Mike
Se il genitore sta per sedersi in attesa dell'uscita del bambino, perché forchetta? – Schwern
per (my $ i = 1; $ i <@ $ result; $ i ++) {print $ result -> [$ i]; } scritto meglio come shift @ $ result; stampa @ $ risultato; (dal momento che non lo usi più) o stampa $ result -> [$ _] per 1 .. $ # result; Lo stile C per loop implora errori off-by-one e spesso è meglio scritto come operatore di intervallo. – Schwern