Come eseguire un comando esterno e catturare la sua uscita in perl6?
Domanda
Come posso eseguire un comando esterno e catturare la sua uscita in Perl6?
in stile Perl5 back-tick non sembrano al lavoro:
> my $results = `ls`;
Confused at line 1, near "my $results"
Sinossi 16 documenta run metodo, ma questo restituisce le stato di uscita piuttosto che l'uscita dal stdout.
Sto usando l'attuazione Rakudo (Rakudo stelle-2010.12).
Soluzione
Usa qqx o qx invece, per esempio:.
> my $results = qqx{ls};
risposto una domanda equivalente su una mailing list:
[...]
:? Cosa sostituisce apice inverso o qx {}
qqx [] o qq: x [] sarebbe l'esatto equivalente. QX [] o q: x [] sarebbe lo stesso con la semantica single-citazione. (Ci sono probabilmente non apici inversi per a tal fine dal momento che stiamo riservando ` per le cose definite dall'utente, e perché backticks sono visivamente difficile dire da virgolette singole in molti font).
Altri suggerimenti
Questo può anche essere fatto in modo sicuro (senza toccare una conchiglia) utilizzando run()
con il parametro out
:
my $proc = run 'ls', q!/tmp/"This" is an ugly name, isn't it?/!, :out;
my $output = $proc.out.slurp-rest;
Maggiori dettagli sono disponibili nel Proc
classe .