class X::Proc::Async::OpenForWriting
class X::Proc::Async::OpenForWriting is Exception {}
When a Proc::Async object is opened only for reading from the external
program (no :w
passed to open), and a write operation such as write
,
print
and say
is performed, an exception of type
X::Proc::Async::OpenForWriting
is thrown:
my $proc = Proc::Async.new("echo");
$proc.start;
$proc.say(42);
CATCH { default { put .^name, ': ', .Str } };
# OUTPUT: «X::Proc::Async::OpenForWriting: Process must be opened for writing with :w to call 'say'»
To fix that you can use writable commands with :w flag:
my $prog = Proc::Async.new(:w, 'cat');
$prog.stdout.tap( -> $str {
print $str;
});
my $promise = $prog.start;
await $prog.say('foo');
$prog.close-stdin;
await $promise;
Methods
method method
method method(X::Proc::Async::OpenForWriting:D:)
Returns the method name that was called and which caused the exception.