Wie einen externen Befehl und erfassen seinen Ausgang in Perl6 auszuführen?
Frage
Wie kann ich einen externen Befehl ausführen und erfassen ihre Ausgabe in Perl6?
Perl5-Stil zurück-Zecken scheinen nicht zu arbeiten:
> my $results = `ls`;
Confused at line 1, near "my $results"
Synopsis 16 dokumentiert die run Methode, aber diese kehrt die Exit-Status statt der Ausgabe von stdout.
Ich bin mit der Rakudo Implementierung (rakudo-Sterne-2010.12).
Lösung
Verwenden qqx oder qx stattdessen z.
> my $results = qqx{ls};
Larry Wall eine äquivalente Frage auf einer Mailing-Liste beantwortet:
[...]
: Was ersetzt Graviszeichen oder qx {}
qqx [] oder qq: x [] würde die genau sein äquivalent. qx [] oder q: x [] wäre das gleiche mit einfachen Anführungszeichen Semantik. (Es gibt wahrscheinlich keine Backticks für da wir die Reservierung, dass Zweck ` für benutzerdefinierte Sachen, und weil Backticks sind visuell schwer zu erzählen von einfachen Anführungszeichen in vielen Schriften.)
Andere Tipps
Dies kann auch sicher durchgeführt werden (ohne Schal zu berühren) mit run()
mit dem out
Parameter:
my $proc = run 'ls', q!/tmp/"This" is an ugly name, isn't it?/!, :out;
my $output = $proc.out.slurp-rest;
Weitere Details verfügbar in der Proc
Klasse .