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).

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top