2011-01-10 10 views
8

¿Cómo puedo ejecutar un comando externo y capturar su salida en Perl6? no parecen¿Cómo ejecutar un comando externo y capturar su salida en perl6?

de estilo Perl5 copias de las garrapatas a trabajar:

> my $results = `ls`; 
Confused at line 1, near "my $results" 

Synopsis 16 documenta el método de ejecución , pero esto devuelve el estado de salida en lugar de la salida de la salida estándar.

Estoy usando la implementación de Rakudo (rakudo-star-2010.12).

Respuesta

11

Uso qqx o qx lugar, por ejemplo:

> my $results = qqx{ls}; 

Larry Wall answered una pregunta equivalente en una lista de correo:

[...]

: ¿Qué reemplaza o backtick qx {}?

qqx [] oqq: x [] sería el equivalente exacto de . qx [] oq: x [] sería lo mismo con la semántica de una sola cita. (probablemente no hay acentos abiertos para ese propósito ya que estamos reservando ` para la materia definida por el usuario, y debido a acentos abiertos son visualmente difícil decir de comillas simples en muchos fuentes.)

+0

Encontré la respuesta justo antes de publicar la pregunta, pero la publiqué de todos modos en caso de que sea útil para otros. – mattbh

0

Esto también se puede hacer de manera segura (sin tocar una cáscara) usando run() con el parámetro out:

my $proc = run 'ls', q!/tmp/"This" is an ugly name, isn't it?/!, :out; 
my $output = $proc.out.slurp-rest; 

Más detalles disponibles en el Proc class.

Cuestiones relacionadas